【问题标题】:AS3 - Is it possible to test objects in the same array against each other?AS3 - 是否可以相互测试同一阵列中的对象?
【发布时间】:2012-08-07 07:36:31
【问题描述】:

我正在制作这个允许玩家推动物体的项目。我可以使用“for”循环很好地针对对象数组测试播放器,并且可以移动对象。

我现在要做的就是测试这些对象并让它们相互移动。比如,我想用玩家推一个块,然后用我已经推的块推另一个块。

这些块都被推入它们自己的数组中,那么我该如何测试它们呢?

【问题讨论】:

    标签: actionscript-3 collision-detection hittest


    【解决方案1】:

    当然,您可以将所有内容放在同一个数组中并使用两个 for 循环:

    for each(var a:Entity in array)
    {
        for each(var b:Entity in array)
        {
            // Objects can't collide with themselves.
            if(a == b) continue;
    
    
            // Check if a and b collide and do something.
            //
        }
    }
    

    此示例代码假定Entity 是您可以相互接触的对象的基类;所有这些都在array 中列出。

    【讨论】:

    • 这适用于我现在正在做的事情。不过有趣的是。后面添加到数组中的对象不能用于推送之前添加到数组中的对象。它们出现故障,突然出现在早期物体的上方。像“对象 A”被添加到数组和“对象 B”之前的阶段。我不能使用对象 B 来推动对象 A。相反,对象 B 出现在对象 A 旁边的某个奇怪位置。知道这是怎么回事吗?
    • @JosephWagner 这将与您的碰撞管理代码有关。您需要注意,您的代码不依赖于检查碰撞的顺序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多