【发布时间】:2018-11-19 15:25:43
【问题描述】:
我正在开发一个 Unity 游戏,玩家在立方体上射击以改变它们的重量(可以是正面的也可以是负面的,最后一个意思是“掉”到屋顶上),我遇到了刚体、球体投射的问题并检测玩家是否接地。
当我的玩家在地面上或任何带有碰撞器的物体顶部时,我使用以下函数将其检测为“接地”:
if (Physics.SphereCast(transform.position, m_Capsule.radius, Vector3.down, out hitInfo,
((m_Capsule.height / 2f) - m_Capsule.radius) + advancedSettings.groundRoofCheckDistance, Physics.AllLayers, QueryTriggerInteraction.Ignore))
{
m_IsGrounded = true;
}
其中advancedSettings.groundRoofCheckDistance 设置为 0.01f。
直到那里,一切正常。但是现在,当我尝试在具有非运动学刚体的立方体上时,我无法使该布尔值变为真。
这里有两个捕获来说明我的问题:
在这个例子中,玩家正落在一个非运动学刚体盒子上,红色圈出的布尔值是 m_isGrounded (false):
在这里,同样的,但立方体是运动的,地面检测得很好:
我真的不知道为什么刚体会这样做,或者我的地面检测功能是否有问题,所以欢迎任何帮助。 谢谢!
PS:我使用的是 Unity 2018.2.15f1
【问题讨论】:
标签: c# unity3d rigid-bodies