【发布时间】:2014-06-22 10:31:13
【问题描述】:
我目前正在使用 Corona SDK 编写游戏,遇到了关于我的玩家和敌人的碰撞问题。出于某种原因,我无法执行与它们的碰撞相关的代码。子弹和敌人碰撞的代码确实有效。我不确定为什么。有没有人遇到过类似的问题?我已包含有问题的代码。
生成玩家:
function spawnPlayer()
player = display.newImage("playership2.png", 50, 50)
physics.addBody(player, "static", {density = 1, friction = 0, bounce = 0})
player.x = display.contentWidth * 0.5
player.y = display.contentHeight - player.height
player.name = "player"
player.alive = true
player:toFront()
end
生成敌人:
function spawnEnemy()
Runtime:addEventListener("collision", onCollision)
enemyNumber = enemyNumber + 1
enemies:toFront()
enemyGroup[enemyNumber] = display.newImage("enemyship1.png", 50, 50)
enemyGroup[enemyNumber].alive = true
physics.addBody (enemyGroup[enemyNumber], "dynamic", {density=0.5, friction=0.3, bounce=0})
enemyGroup[enemyNumber].myName = "enemy"
end
碰撞函数:
function onCollision(event)
if(event.object1.myName == "player" and event.object2.myName == "enemy") or
(event.object1.myName == "enemy" and event.object2.myName == "player") then
--code
end
【问题讨论】:
-
这不是一个好问题。您基本上是在要求其他人调试您的代码 - 您应该提取重要/相应的部分并将它们包含在您的问题中。
-
抱歉,我已对其进行了编辑并将相关部分放入问题中。
-
那不起作用怎么办?在碰撞回调中,
event.object1和event.object2得到什么值?还是您的回调根本没有运行的问题? -
这就是问题所在,是的。敌人只是将玩家推来推去。所以我知道它们至少是感人的,只是我的代码根本没有执行。
-
创建一个显示问题的最小独立示例。事实上,我们无法判断是什么问题,因为我们不知道什么代码调用了 spawn。你的意思是“子弹和敌人碰撞的代码不起作用”吗?