在没有碰撞回调的情况下获取多个对象的冲突

时间:2014-05-28 12:27:50

标签: unity3d 2d physics collision

我正在制作一个平台游戏(sidescroller),现在我正在为玩家制作手榴弹发射器。

它产生的手榴弹是预制件,这个预制件有一个圆形碰撞器2D,它是爆炸的爆炸半径。

当产生手榴弹时,我会运行它(除其他外);

        // Add the initial force
    rBody.AddForce(new Vector2(forceX, forceY) *300f);
    Invoke("Explode", 2.5f);

我无法弄清楚如何处理Explode功能。 我想找到那时与圆形碰撞器2D碰撞的所有游戏对象,但我找不到办法。

我希望能够做到这样的事情(不是真正的代码,但你了解我想要做的事情)

void Explode () {
            collidingObjects = circleCollider.getCollisions();
            foreach(collidingObject as entity) {
                if(entity = 'player')
                     player.pushLeftOrRight() 
                elseif(entity = 'enemy')
                     grenade.dealDamage(grenade.damage)
            }
    Debug.Log("Explode");
    Destroy(gameObject);
}

我猜它不会起作用,所以有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

在手榴弹的脚本中,使用OnTriggerEnterOnCollisionEnter记录碰撞;基本上只有每个手榴弹的HashSet更新并跟踪它碰撞的内容。然后Explode只需要在调用它时迭代这个集合。