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'这个名字在当前上下文中不存在。
您正在引用一个不存在的变量(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 () {
}
}
这应该能让你大致到达你想去的地方!