如何在 C# Unity3D 中创建不需要碰撞器但支持 Skinned Mesh Renderer 的自己的 Raycast 组件?

How to create your own Raycast component, which doesn't need colliders, but supports Skinned Mesh Renderer in C# Unity3D?

我正在制作第一人称射击游戏,我有一个玩家模型 (3D),已装配,上面有动画和蒙皮网格渲染组件。我尝试了 Mesh Collider 组件,但它对游戏性能(动画、每秒帧数)有很大的负面影响。所以我想,一定有办法制作自己的 Raycast System(Script, Variable),但我不知道从哪里开始。有没有办法查看 Unity 的 RaycastHit 组件脚本,或者你们有什么想法如何开始制作自己的 Raycasting 脚本,它不需要碰撞器,但支持 Skinned Mesh Renderer 组件?

P.S。 我需要它来射击玩家。

不要在由骨骼动态控制的网格(绑定网格)上使用网格碰撞器。这对大多数计算机来说太重了。 我建议为四肢和头部使用多个胶囊碰撞器,为 chest/stomach 使用 1 或 2 个盒子碰撞器。将这些碰撞器附加到骨骼上,这样碰撞器就会随着动画一起移动。 这样就可以使用unity默认的光线投射系统了:Physics.Raycast.