unity3d计算2个碰撞体撞击的准确度

问题描述 投票:0回答:1

我正在使用 unity3d 2022.3.10f,我正在尝试计算在我为 oculus 制作的 VR 游戏中,某人使用控制器击中物体的准确度。

为了简化这一点,以便我可以在各种场景中重复测试,我有一个静态对象(球体),上面有一个碰撞器。我有一个第二个物体(另一个球体),上面也有一个对撞机。

它们彼此直接对齐,例如 球体 1:位于 0,1,1 球体 2:位于 0,1,0

所以它们在 z 轴上的距离为 1。

然后,我向球体 2 赋予速度,使其精确地向球体 1 (0,0,1) 发送。当碰撞器触发时 - 我想要它们碰撞的准确度百分比 - 基本上将球体 2 的中心投影到其路径上,看看它与球体 1 的中心有多接近。

在上面的例子中,我期望 100% 的百分比,因为它们处于精确的碰撞路线上。

如果我随后更改球体 2 上施加的速度,使其仍然发生碰撞,但稍微离线,即速度为 (0,0.04,1) - 我预计会出现较低的 % 值,例如75% 等等,如果他们在击中时刚好刮掉,则达到接近 0 的百分比。

我尝试了很多不同的方法,但无法想出任何办法。

有人有代码可以分享吗?

感谢您的宝贵时间。 R

unity-game-engine
1个回答
0
投票

对于球体(或任何具有明确中心点的物体),您基本上可以检查两个方向的

Vector3.Dot
乘积

Throw/Shoot origin -> target center

Throw/Shoot origin -> actually hit point 

您可以从

OnCollisionEnter

获得生命值
© www.soinside.com 2019 - 2024. All rights reserved.