특정 충돌에 대해 테이블의 모든 개체를 감지하는 데 문제가 있습니다. 테이블의 첫 번째 오브젝트가 눈덩이처럼 치는 경우에만 점수를 올릴 수 있습니다. 다음은 객체의 생성 및 충돌에 사용하는 코드입니다. 버튼을 누른 후 createSnowBall()에 대한 함수 호출이 있습니다. 그 부분은 잘 작동합니다.코로나를 사용하여 lua로 충돌 감지
local physics = require("physics")
physics.start()
physics.setGravity(0, 0)
local snowBalls = {}
local ornaments = {}
local score = 0
local scoreText = display.newText("Score: " .. score, 70, 25, native.systemBoldFont, 32)
function createSnowBall()
snowBall = display.newImageRect("snowball.png", 20, 20)
snowBall.x = gun.x
snowBall.y = HEIGHT - 110
physics.addBody(snowBall, { density = 1.0, friction = 1, bounce = 0, radius = 20 })
snowBall.isSnowBall = true
snowBalls[#snowBalls+1] = snowBall
moveSnowBall(snowBall)
return snowBall
end
function createOrnament(num)
if num == 1 then
ornament = display.newImageRect("blueO.png", 30, 40)
elseif num == 2 then
ornament = display.newImageRect("redO.png", 30, 40)
elseif num == 3 then
ornament = display.newImageRect("greenO.png", 30, 40)
end
ornament.isOrnament = true
ornaments[#ornaments+1] = ornament
ornament.x = math.random(50, 270)
ornament.y = 3
local radius = 15
physics.addBody(ornament, { density = 1.0, friction = 1, bounce = 1, radius = radius })
ornament:applyForce(35, 70, ornament.x + 4, ornament.y + 4)
return ornament
end
createOrnament(math.random(1, 3))
function snowBallCollision(event)
if event.phase == "began" then
local target = event.other
if target.isSnowBall then
score = score + 5
scoreText.text = "Score: " .. score
end
end
end
ornament:addEventListener("collision", snowBallCollision)
, 기능 장식 코딩 유지 : snowBallCollision (이벤트)를 눈덩이로 :하여 addEventListener ("충돌", 장식)하지만, 내가 가지고있는 문제는 버튼을 눌렀을 때 snowBall이 생성되어 미리 만들어지지 않는다는 것입니다. – jeppy7