我想让第一人称控制器与立方体碰撞。立方体和控制器都应用了刚体,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中遇到了这个问题,我已经创建了一个新的项目来实现这一点。
** 编辑: **我忘了提到如果多维数据集击中其他任何东西(例如如果立方体的重力被打开时的平面)则调用函数,这让我相信那里是我在第一人称控制器中遗漏的东西。
答案 0 :(得分:2)
我发现了我的问题。我需要在第一人称对撞机上添加一个胶囊对撞机。它需要被添加,而不是被替换,因为其中一个脚本依赖于另一个脚本,而第二个想法是它没有完成它的工作。
胶囊对撞机需要比控制器大一点,并且立方体的刚体碰撞检测必须设置为连续离散。
可能不是最好的解决方案,但它确实有效。
答案 1 :(得分:1)
缺少Collision参数,在JavaScript中尝试:
function OnCollisionEnter(collision : Collision) {