Unity中快速移动游戏对象的碰撞检测

Collision Detection for fast moving game object in Unity

我正在开发一款基本的 space 射击游戏,但我在使用触发对撞机时遇到了问题。

在游戏中,我有一个 Bullet 预制件,上面附有一个 Capsule Trigger Collider,而敌人现在是一个基本的立方体,上面附有一个盒子碰撞器。

当我 运行 游戏开始射击子弹时,Enemy 方块直到射击几下后才消失。

这是我的子弹预制件代码:

void OnTriggerEnter(Collider col) {
        if (col.tag == "Enemy") {
            Destroy (col.gameObject);
        }
    }

以及我的每个游戏对象的属性截图:

子弹预制件:

这是敌人方块:

这里有一段 link 视频,讲述了正在发生的事情...

https://youtu.be/NjHK6oVP0OQ

我知道这个问题可能与评论中发布的问题类似,但我确实找到了另一种解决方案,可能对遇到这个确切问题的人有用。

发生错误是因为我的 "Bullet" 预制件移动得太快以至于无法检测到碰撞。

修复: 我将 Bullet 预制刚体的碰撞检测 属性 更改为连续动态,因为它移动得很快. link 刚体碰撞检测模式的完整参考如下。

https://docs.unity3d.com/ScriptReference/Rigidbody-collisionDetectionMode.html

这个问题与评论中发布的 "similar" 问题的答案之间的区别在于,答案与光线投射和非常简单的碰撞器(这更符合我的要求)有很大关系。