我正在使用CS4。语言是动作脚本3
在我的图书馆里我有两件物品:
玩家对象在移动时已经正常工作了。现在,当我在舞台上放置多个墙壁物体(墙=32x32px)时,我想要阻止玩家在进入墙壁时移动。
我尝试给所有的墙取相同的实例名,只检查是否与该对象发生冲突,但当我这样做时,冲突只对其中一个墙起作用。
我可以给所有的墙的实例一个不同的碰撞脚本,但这是耗时的方式,有另一种方法,在全球范围内定义墙为坚实的球员?
提前感谢!
发布于 2010-04-28 00:34:22
您最好的选择是将所有的墙壁实例放在一个父电影剪辑中,并检查播放器实例是否与其发生碰撞。
或者,您可以循环遍历所有的墙壁实例并分别进行检查。可能听起来很浪费,但这样您就可以在碰撞检测例程中添加一些优化。例如,如果播放器在屏幕的右侧,为什么要检查是否与左墙发生碰撞。
或者你可以用数学来检查碰撞,避免Flash的内置例程。听起来可能会有更多的工作,但看到它有多大的缺陷(受帧速率等的限制),我会这样做--当然,如果游戏动力学允许的话。
发布于 2010-04-27 23:17:47
记住,任何想要看电影的人都是movieclip类的一个实例。通过将所有实例命名为相同的名称,您将有效地执行以下操作:
var myClip:MovieClip = new MovieClip();
myClip = new MovieClip();
myClip <-- will always refer to the later movieclip since thats what it is now referenced to.要解决您的问题,您最有可能创建一个包含集合的类(很可能是Array)。您将在此数组中添加对每个MovieClip的引用(只需按下MovieClips)。然后,您将有一个函数,称为每个帧,或者每次字符在这个数组中循环移动时,检查墙壁是否击中播放机,如果没有,则返回true,这是否已发生或为false。
https://stackoverflow.com/questions/2724043
复制相似问题