C# Unity3d不喜欢碰撞

C# Unity3d不喜欢碰撞,c#,unity3d,collision,C#,Unity3d,Collision,我想知道,当一个人碰到一个四方形物时,他会去这个科幻堡垒。但是,它表示“冲突”名称在当前上下文中不存在。您引用的是一个不存在的变量冲突。你有一个不存在的变量collisionObject 碰撞通常是方法的参数名称。您的代码可能应该在该方法中,而不是在FixedUpdate中。我猜您是从某个地方复制了教程中的代码,但使用了错误的方法 另一方面,collisionObject更难猜测,但我认为如果脚本是玩家对象上的一个组件,那么collisionObject应该是你的四元体;如果脚本位于四边形上,则

我想知道,当一个人碰到一个四方形物时,他会去这个科幻堡垒。但是,它表示“冲突”名称在当前上下文中不存在。

您引用的是一个不存在的变量冲突。你有一个不存在的变量collisionObject

碰撞通常是方法的参数名称。您的代码可能应该在该方法中,而不是在FixedUpdate中。我猜您是从某个地方复制了教程中的代码,但使用了错误的方法

另一方面,collisionObject更难猜测,但我认为如果脚本是玩家对象上的一个组件,那么collisionObject应该是你的四元体;如果脚本位于四边形上,则collisionObject应该是播放器

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");
        }
    }
}

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

添加一个新函数,并确保播放器在inspector中被标记为播放器。您还需要确保玩家接触的四边形上有一个碰撞器,玩家上有一个刚体组件

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");
        }
    }
}

这会让你大致达到你想要的位置

当然不是。碰撞定义在哪里?冲突是指向对象实例的变量的名称。你需要在某个地方定义这个变量。所以你说。。。void onCollisionCenter{if collision.gameObject.Quad==collisionObject{Application.LoadLevelSciFi Level;}}?读取链接:该方法也有一个参数。void oncollisionintercollision{…}-这是两个未定义的变量之一。