【问题标题】:Unity3D First Person Controller Collision detectionUnity3D 第一人称控制器碰撞检测
【发布时间】:2018-07-19 20:11:28
【问题描述】:

我试图让第一人称控制器与立方体发生碰撞。立方体和控制器都应用了刚体,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 中遇到了这个问题,我已经创建了一个新项目来解决这两个问题。

** 编辑: ** 我忘了提到如果立方体撞到其他任何东西(例如打开立方体重力时的平面),就会调用函数,这让我相信那里是我从第一人称控制器中缺少的东西。

【问题讨论】:

    标签: collision-detection unity3d


    【解决方案1】:

    我发现了我的问题。我需要在第一人称对撞机中添加一个胶囊对撞机。它需要添加,而不是替换,因为其中一个脚本依赖于另一个脚本,但再三考虑并没有发挥作用。

    capsule collider 需要比 Controller 大一点,Cube 的刚体 Collision Detection 必须设置为 Continuous Discrete。

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

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

    【讨论】:

      【解决方案2】:

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

      function OnCollisionEnter(collision : Collision) { 
      

      【讨论】:

      • 如果我要使用以下函数,它仍然无法检测到碰撞:function OnCollisionEnter(collision : Collision) { print(collision.gameObject.name); } 我没有放入参数,因为我不打算在函数本身中使用它们.另外,我发现这个网站的回复方法很烦人。我好像只能用内联代码的方法,回车提交回复,双空格不换行,四个空格不做代码块:/
      • 令人惊讶的是,我从不使用 JS,而是使用 C#。如果我在 C# 版本的 OnTriggerEnter 中省略了一个参数,它肯定不会被调用。
      猜你喜欢
      • 2020-08-16
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多