首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理一个电影的多个实例的碰撞检测?

如何处理一个电影的多个实例的碰撞检测?
EN

Stack Overflow用户
提问于 2010-04-27 18:47:44
回答 2查看 2.1K关注 0票数 0

我正在使用CS4。语言是动作脚本3

在我的图书馆里我有两件物品:

  • player
  • wall

玩家对象在移动时已经正常工作了。现在,当我在舞台上放置多个墙壁物体(墙=32x32px)时,我想要阻止玩家在进入墙壁时移动。

我尝试给所有的墙取相同的实例名,只检查是否与该对象发生冲突,但当我这样做时,冲突只对其中一个墙起作用。

我可以给所有的墙的实例一个不同的碰撞脚本,但这是耗时的方式,有另一种方法,在全球范围内定义墙为坚实的球员?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-28 00:34:22

您最好的选择是将所有的墙壁实例放在一个父电影剪辑中,并检查播放器实例是否与其发生碰撞。

或者,您可以循环遍历所有的墙壁实例并分别进行检查。可能听起来很浪费,但这样您就可以在碰撞检测例程中添加一些优化。例如,如果播放器在屏幕的右侧,为什么要检查是否与左墙发生碰撞。

或者你可以用数学来检查碰撞,避免Flash的内置例程。听起来可能会有更多的工作,但看到它有多大的缺陷(受帧速率等的限制),我会这样做--当然,如果游戏动力学允许的话。

票数 1
EN

Stack Overflow用户

发布于 2010-04-27 23:17:47

记住,任何想要看电影的人都是movieclip类的一个实例。通过将所有实例命名为相同的名称,您将有效地执行以下操作:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2724043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档