如何使用OnTriggerExit函数并检查我的船是否发生碰撞?

时间:2016-10-07 06:04:18

标签: c# unity3d

我想检查我的船是否相撞而不是其他物体。 所以这是我附加到GameObject的脚本,GameObject有盒子对撞机和Rigidbody。盒子对撞机:触发器设置为开启。他的体型是500 600 500. Rigidbody我没有改变任何东西而且使用了Gravity。

在运行游戏时,我有许多克隆的游戏对象,每一个都标记为“Sphere”但在脚本中,当我检查标签名称时,对撞机是“未标记”。

我要做的是确保碰撞的物体是克隆的太空船。

using UnityEngine;
using System.Collections;

public class InvisibleWalls : MonoBehaviour {

    public float smooth = 1f;
    private Vector3 targetAngles;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    void OnTriggerExit(Collider other)
    {
        if (other.tag == "Sphere") 
        {
            targetAngles = other.transform.eulerAngles + 180f * Vector3.up;
            other.transform.eulerAngles = Vector3.Lerp (other.transform.eulerAngles, targetAngles, smooth * Time.deltaTime);
        }
    }
}

这是我试图检查船只发生碰撞的部分:

if (other.tag == "Sphere")

但是当使用断点时,它会在pbject发生碰撞时停在此行上,但另一个.tag标记为“未标记”。

屏幕截图显示克隆的对象太空船,标记为“Sphere”

Sphere Tag

此屏幕截图显示了带有框架对撞机和刚体的游戏对象

Collider gameobject

1 个答案:

答案 0 :(得分:0)

从我可以收集到的,

你的CrashLandedShip对象没有碰撞器,添加碰撞器应该可以工作。

另请注意,要使触发器起作用,其中一个对象(地形或船只)必须是非触发器(2个触发器不会导致碰撞或触发事件)

所以试试这个:在您的CrashLandedShip_UpsideDown预制件上添加一个球体对撞机并确保它们

其余代码看起来很好。