我有以下简单场景:地板的 (0, 0, 0) 处的缩放框和 (0, 2, 0) 处的 1 个尺寸框。我尝试做简单的重力并使用以下代码:
private float gravity = 1.0f;
private Vector3 moveVector;
void Update()
{
if (characterController.IsGrounded)
{
Debug.Log("is grounded");
verticalVelocity = 0;
}
else
{
Debug.Log("not grounded");
verticalVelocity -= gravity;
}
Debug.Log("vertical velocity:" + verticalVelocity);
moveVector.x = 0;
moveVector.y = verticalVelocity;
moveVector.z = 0;
characterController.Move(moveVector * Time.deltaTime);
}
Run Code Online (Sandbox Code Playgroud)
我在日志中看到,当物体位于地板上时,我有接地/不接地消息。视觉上物体在地板上并且不振动。当物体放在地板上时,为什么我没有持续的“接地”?也许这就是 CharacterController 的工作原理,但我在文档中找不到任何有关它的信息。
小智 4
有同样的问题
当角色控制器接地时,只有一些重力
代替verticalVelocity = 0;
经过
verticalVelocity = -gravity * Time.deltaTime;