重启游戏后,碰撞会重复发生。

这是我的onCollision函数,但每次游戏重新开始时,碰撞会重复发生。

有什么原因吗?

点赞
用户501459
用户501459
如果 `obj1.name` 等于 `"jetplayer"` 且 `obj2.name` 等于 `"BCloud1"`,则 `MinLife()`。
如果 `obj1.name` 等于 `"jetplayer"` 且 `obj2.name` 等于 `"BCloud2"`,则 `pontsMin10()`。
如果 `obj1.name` 等于 `"jetplayer"` 且 `obj2.name` 等于 `"BCloud3"`,则 `pontsMin20()`。
如果 `obj1.name` 等于 `"jetplayer"` 且 `obj2.name` 等于 `"GCloud1"`,则 `pontsplus50()`。
如果 `obj1.name` 等于 `"jetplayer"` 且 `obj2.name` 等于 `"bla"`,则 `score = score - 20`。

提示:这段代码中存在大量冗余的 `obj1.name == "jetplayer"` 的测试。我会重写这段代码,以便只测试一次:

如果 obj1.name 等于 "jetplayer",则 如果 obj2.name 等于 "BCloud1",则 MinLife(); 如果 obj2.name 等于 "BCloud2",则 pontsMin10(); 如果 obj2.name 等于 "BCloud3",则 pontsMin20(); 如果 obj2.name 等于 "GCloud1",则 pontsplus50(); 如果 obj2.name 等于 "bla",则 score = score - 20; 结束。

当我第一次启动游戏并击中 "MinLife()" 时,它会减去一条命,但是当您重新启动游戏'gameover.lua->start.lua->game.lua' 时,当您击中 "MinLife ()" 时,它会减去两条命,第三次重新启动三条命令依此类推。

你没有显示 MinLife 的代码,因此我们无法确定错误是否在该代码中。请检查您是否多次添加了碰撞处理程序(例如,请确保您的 exitScene 处理程序被触发了等)。

2013-07-09 16:23:31
用户1605727
用户1605727

请确保你的local function onCollision(event)函数是放在其他函数外面的。

也许问题在于你的Runtime:removeEventListener("collision", onCollision),它找不到onCollision因为它被放在另一个函数里面。

2013-07-09 16:59:54