我有以下简单场景:地板的(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);
}
我在日志中看到当对象在地板上的事件时我有接地/不接地的消息。视觉对象在地板上而不是振荡。 为什么我不能保持稳定"接地"当物体在地板上? 也许是CharacterController的工作原理,但我在文档中找不到任何相关内容。
答案 0 :(得分:1)
有同样的问题
当角色控制器接地时,只有一些重力
替换verticalVelocity = 0;
通过
verticalVelocity = -gravity * Time.deltaTime;
答案 1 :(得分:1)
您必须将“角色控制器的最小移动距离”设置为“ 0”(零),否则将始终出现此行为,它试图限制检查其是否接地的次数,但最终玩家不在乎,他们会混入跳转按钮并称其为越野车
答案 2 :(得分:1)
在角色控制器检查器中将“最小移动距离”设置为0对我来说解决了一个非常相似的问题。