我意识到描述有点模糊,如果不显示代码我无法解释这个问题!
基本上,我在 AS3 中制作了一款游戏,其中包含一个在平台风格关卡收集物品中移动的角色。这些项目都是同一实例 (vinyl1a) 的单独影片剪辑。
对关卡中每个项目的引用存储在一个数组中,如下所示:
vinylArray=[mapbg.misc.vinyl1, mapbg.misc.vinyl2, mapbg.misc.vinyl3, mapbg.misc.vinyl4,...]
实际数组最多可包含 40 个项目。碰撞检测是通过一个 for 循环完成的,如下所示:
var i:int;
for (i=0; i < maxVinyl; i++){ //iterate from 0 to maximum amount of vinyl
if (woody.hitTestObject(vinylArray[i])) { //checks if woody collides with vinyl
if (vinylArray[i].visible == true) { //checks if the vinyl has already been taken
vinylArray[i].visible = false; //removes vinyl from map
vinylCollected++; //adds to score
updateScore();
}
}
}
在这种情况下,“木本”是角色。现在,问题是,我已经让它对多达 10 个“乙烯基”物品工作得很好,涵盖了游戏的前 3 个关卡。现在我已经进入第 4 级,我在地图中添加了更多的“乙烯基”电影剪辑(数组始终有 40 个值,但 for 循环仅迭代到为每个单独级别设置的“maxVinyl”)和一些原因是碰撞检测不起作用。
没有错误消息,前 10 个影片剪辑仍然可以正确检测到,但 11 之后的则不是。
任何帮助将不胜感激 - 如果您需要有关该问题的更多信息,请询问!
干杯
编辑:忘了提,我在第一级测试了 10 多个乙烯基并且检测工作正常 - 情况是所有乙烯基影片剪辑都存储在每个级别的单独关键帧中,在名为 misc 的影片剪辑中。所以我可以在第一级做10+,但似乎就是这样..