Unity3D第一人称控制器碰撞检测

时间:2012-02-28 10:23:01

标签: collision-detection unity3d

我想让第一人称控制器与立方体碰撞。立方体和控制器都应用了刚体,Is Kinematic设置为false,它们是物理碰撞,但我的函数都没有被调用。 (我已经包含了我们尝试使用的所有功能。)

我有第二个立方体配置为触发器,它可以工作。我的讲师和我自己都不知道为什么它不起作用。

应用于多维数据集的代码如下:

var green : Material;

function OnControllerColliderHit () {
    print("OnControllerColliderHit");
    this.gameObject.renderer.material = green;
} 

function OnCollisionEnter(){
    print("OnCollsion");
    this.gameObject.renderer.material = green;
}

function OnCollisionStay(){
    print("OnCollsionStay");
    this.gameObject.renderer.material = green;
}

function OnTriggerEnter(){
    print("OnTriggerEnter");
    this.gameObject.renderer.material = green;
}

以下是我的项目设置的屏幕截图:http://i.stack.imgur.com/Y4HED.png

另外,我在Windows版本的Unity中遇到了这个问题,我已经创建了一个新的项目来实现这一点。

** 编辑: **我忘了提到如果多维数据集击中其他任何东西(例如如果立方体的重力被打开时的平面)则调用函数,这让我相信那里是我在第一人称控制器中遗漏的东西。

2 个答案:

答案 0 :(得分:2)

我发现了我的问题。我需要在第一人称对撞机上添加一个胶囊对撞机。它需要被添加,而不是被替换,因为其中一个脚本依赖于另一个脚本,而第二个想法是它没有完成它的工作。

胶囊对撞机需要比控制器大一点,并且立方体的刚体碰撞检测必须设置为连续离散。

可能不是最好的解决方案,但它确实有效。

http://i.stack.imgur.com/Ii8Ru.png

答案 1 :(得分:1)

缺少Collision参数,在JavaScript中尝试:

function OnCollisionEnter(collision : Collision) {