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

Wil*_*rim 0 c# unity-game-engine collider

我正在开发一款基本的太空射击游戏,但在触发碰撞器方面遇到了麻烦。

在游戏中,我有一个子弹预制件,上面附加了一个胶囊触发碰撞器,而敌人现在是一个基本的立方体,上面附加了一个盒子碰撞器。

当我运行游戏时,我开始射击子弹,敌人立方体直到几次射击后才会消失。

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

void OnTriggerEnter(Collider col) {
        if (col.tag == "Enemy") {
            Destroy (col.gameObject);
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

子弹预制件:

子弹预制件

这是敌人的立方体:

在此输入图像描述

这是正在发生的事情的视频链接......

https://youtu.be/NjHK6oVP0OQ

Wil*_*rim 5

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

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

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

在此输入图像描述

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

这个问题与评论中发布的“类似”问题的答案之间的区别在于,答案与光线投射与非常简单的碰撞器(这更多是我想要的)有很大关系。