Unity3d不喜欢碰撞

本文关键字:碰撞 不喜欢 Unity3d | 更新日期: 2023-09-27 18:05:27

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'这个名字在当前上下文中不存在。

Unity3d不喜欢碰撞

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

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

另一方面,collisionObject更难猜测,但我希望,如果你的脚本是打算在播放器对象上的一个组件,那么collisionObject应该是你的四元;如果脚本在quad上,那么collisionObject应该是玩家。

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

添加一个新功能,并确保播放器在检查器中被标记为player。你还需要确保玩家接触到的四边形上有一个碰撞器,玩家身上有一个刚体组件。

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 () {
    }
}

这应该能让你大致到达你想去的地方!