检查Gameobject是否在另外两个Gameobject之间传递

时间:2015-02-13 12:00:37

标签: unity3d unityscript unity3d-2dtools

我有一个团结的三个Gameobject(前锋)可以说红色,绿色和蓝色。

当我将重力施加到绿色物体时,我想检查它是否在红色和蓝色之间传递?并且我对Red对象施加力我想检查它是否在绿色和蓝色之间传递

是否有任何线路对撞机或统一的东西?

下面我还附上了我想要实现的图像enter image description here

1 个答案:

答案 0 :(得分:2)

在检查器中创建三个用于遮罩的图层,名为greenballlayer,blueballlayer,redballlayer。现在逐个选择球并相应地将它们分配给各层(蓝色到蓝色等)。现在 -

public GameObject redBall, blueBall, greenBall;
public LayerMask greenBallLayerMask;

greenBallLayerMask仅检查与检查器中的图层关联的游戏对象的对撞机。然后使用此脚本选择游戏对象。您将在检查器中看到绿球图层蒙版“无”。从下拉列表中选择greenballlayer而不是任何内容。通过逐个拖动球,在检查器中相应地分配(GameObject redBall,blueBall,greenBall)。完成。现在 -

 void FixedUpdate(){
        bool greenBallPassed = Physics2D.Linecast (new Vector2(redBall.transform.position.x, redBall.transform.position.y), new Vector2(blueBall.transform.position.x, blueBall.transform.position.y), greenBallLayerMask);
        if(greenBallPassed){
            //Do your stuff
        }
    }

如果您需要其他线和其他球的图层屏蔽,请执行上述步骤。希望它会对你有所帮助。根据您的需要可能需要调整。但你会明白该怎么做。