【问题标题】:Action Script 3. Multiple stages are like 1动作脚本 3. 多个阶段就像 1
【发布时间】:2013-09-17 03:19:30
【问题描述】:

我正在创建一个简单的 Flash 游戏,其中角色在地面上移动,并有一些阶段可以跳过。

问题是所有的阶段都充当1个对象,这会使角色看起来像是在空中飞行:

所有阶段都被调用:ground3 这是角色跳跃并停留在地面上的部分代码:

if(Hero.y_speed>0 && Hero.hitTestObject(ground3)){
    Hero.y_speed=0;
    if(space){
        trace("You clicked SPACE");
        Hero.y -= 80;
    }

你有什么办法解决这个问题吗?

【问题讨论】:

    标签: actionscript-3 flash actionscript stage


    【解决方案1】:

    为您的目的使用外部库,例如 this one.

    描述了Here,如何使用它(你也可以在这里找到其他有用的信息)。

    import com.coreyoneil.collision.CollisionList;
    
    var myCollisionList:CollisionList = new CollisionList(hero);
    
    //add all stages separately
    myCollisionList.addItem(stage[1...n]);
    
    if(myCollisionList.checkCollisions().length > 0) {
         //colision detected
    }
    

    【讨论】:

    • 谢谢你的回答,我需要从你给我的链接下载任何扩展?我怎样才能添加这些阶段?我需要将它们保存为不同的符号吗?我的意思是在每个阶段我需要单击,然后转换为符号,然后添加到列表?在这个检测到//碰撞的地方是什么?
    • 看,这个解决方案(分别检查英雄与阶段的碰撞)有一个很大的优点 - 性能。如果英雄移动 - 阶段会出现并隐藏在窗口边缘后面。如果您一次检查所有阶段的 hero,那么您会使用较早消失的阶段进行此操作。在这种情况下,您可以将阶段添加到碰撞列表并在游戏过程中将其删除。
    • 是的,您需要下载源代码(下载选项卡)并将其移动到您的源代码文件夹中。
    • '我的意思是在每个阶段我需要单击,然后转换为符号,然后添加到列表?' - 不,阶段应该是 ONE,所有阶段的 COMMON MovieClip(如果您计划在游戏中添加更多、不同的阶段类型,请为每种类型创建新的 ONE)。更多信息:vimeo.com/9614032
    • 非常感谢您的回答,我下载了它。所以到 myCollisionList 我只需要添加 ground3? (ground3 - 一个,所有阶段的通用影片剪辑)。但是如果我这样做,我会遇到同样的问题,我需要在哪个函数中使用这段代码?我需要在你写//colision detected的地方输入什么?
    猜你喜欢
    • 2012-04-05
    • 2022-09-25
    • 2010-12-20
    • 2014-05-18
    • 2010-12-09
    • 2011-08-11
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多