1
테이블 대상에서 임의로 개체를 선택하는 함수를 추가하려고합니다. 나는 당신이 targets[math.random(#targets)]
을 사용할 수있는 곳을 읽었지 만, 내가 할 때 resetTarget()
호출에 관계없이 대상 중 하나만 재설정하고 실제로 다음 대상을 임의로 만들지는 않습니다.루아의 테이블에서 임의로 오브젝트를 선택하려면 어떻게해야합니까?
local targets -- an array of target objects
local bomb = display.newImage("bomb.png")
local asteroid = display.newImage("asteroid.png")
local balloon = display.newImage("balloon.png")
targets = { bomb, asteroid, balloon }
function createTarget()
for i = 1, #targets do
local t = targets[i]
t.x = WIDTH + 50 -- start slightly off screen to the right
t.y = math.random(100, HEIGHT - 100) -- at random altitude
end
end
function resetTarget(obj)
createTarget()
end
function detectHits()
-- Do hit detection for ball against each target
local HIT_SLOP = BIRD_RADIUS * 2 -- Adjust this to adjust game difficulty
for i = 1, #targets do
local t = targets[i]
if math.abs(t.x - bird.x) <= HIT_SLOP
and math.abs(t.y - bird.y) <= HIT_SLOP then
-- Hit
isBomb(t)
isAsteroid(t)
isBalloon(t)
resetTarget(t)
updateScore()
end
end
end
무작위 대상은 detectTarget (t)을 호출하며 무작위 대상을 만들어야하는 createTarget()을 호출해야하는 detectHits()를 대상으로합니다. – jeppy7
또한, 코드의 현재 줄 currentTarget = targers [rand]는 currentTarget = targets [rand] 여야합니다. 또한, 루아 함수를 작성하는 표준 방법은 다음과 같습니다 : function newTarget() ... – jeppy7
'table.maxn (targets)'대신'# targets'를 사용하는 것이 더 좋습니다. – lhf