Unity3d不喜欢碰撞

时间:2014-05-28 12:37:45

标签: c# unity3d collision

using UnityEngine;
using System.Collections;

public class chicken_for : MonoBehaviour {

// Use this for initialization
void Start () {

}

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

        if (collision.gameObject.Quad == collisionObject){
            Application.LoadLevel("SciFi Level");
        }
    }
}

我试图当一个人接触四人时,他去了这个科幻堡垒。然而,它说出了名字' collision'在当前背景下不存在。

2 个答案:

答案 0 :(得分:3)

您正在引用不存在的变量(collision)。你有一个不存在的变量collisionObject

collision通常是OnCollisionEnter方法的参数名称。您的代码应该在此方法中,而不是FixedUpdate。我猜你已经从某个教程复制了代码,但是把它放错了方法。

另一方面,

collisionObject更难以猜测,但我希望如果你的脚本是播放器对象上的一个组件,那么collisionObject应该是你的四边形;如果脚本在四边形上,则collisionObject应该是播放器。

无论哪种方式,您都需要声明该变量 - 可能是公共字段,以便您可以从检查器中填充它。

答案 1 :(得分:1)

添加新功能并确保在检查器中将播放器标记为播放器。您还需要确保玩家接触的四边形上有一个对撞机,并且玩家需要一个刚体组件。

using UnityEngine;
using System.Collections;

public class chicken_for : MonoBehaviour {

//This function will handle the collision on your object
void OnCollisionEnter (Collider col){
    if(col.gameobject.tag == "Player"){    //if colliding object if tagged player
        Application.LoadLevel("SciFi Level"); //load the sci-fi level
    }
}
// Use this for initialization
void Start () {

}

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

    }
}

这应该可以让你大致到达你想要的地方!