当 我 给 我 的 角色 添加 一 个 Character Controller
组件 时 , 我 的 角色 在 空中 上升 了 0 . 08 个 单位 。 这 只 发生 在 我 开始 移动 的 时候 。 对撞 机 似乎 在 正确 的 位置 。
以下 是 具有 Character Controller
组件 的 角色 的 屏幕 截图 :
我 的 角色 设置 屏幕 截图 :
我 的 移动 代码 :
[SerializeField] private Transform _orientation;
private CharacterController _controller;
private float xInput;
private float yInput;
private Vector3 _moveDirection;
private float rotationSpeed = 10f;
private float speed = 5f;
private void Awake()
{
_controller = GetComponent<CharacterController>();
}
private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
private void Update()
{
xInput = Input.GetAxis("Horizontal");
yInput = Input.GetAxis("Vertical");
_moveDirection = _orientation.forward * yInput + _orientation.right * xInput;
RotatePlayerToCameraView();
Move(_moveDirection);
}
private void RotatePlayerToCameraView()
{
Vector3 viewDirection = transform.position - new Vector3(_orientation.position.x, transform.position.y, _orientation.position.z);
_orientation.forward = viewDirection.normalized; // понять зачем это и как вообще
gameObject.transform.forward = Vector3.Slerp(gameObject.transform.forward, viewDirection.normalized, Time.deltaTime * rotationSpeed);
}
private void Move(Vector3 moveDirection)
{
float scaledMoveSpeed = speed * Time.deltaTime;
moveDirection = new Vector3(moveDirection.x, 0, moveDirection.z);
_controller.Move(moveDirection * scaledMoveSpeed);
}
中 的 每 一 个
1条答案
按热度按时间brccelvz1#
角色控制器的
skin width: 0.08
和 * 我的角色被0.08 units
升到空中 * 的问题之间似乎有关联。查看CharacterController.skinWidth Unity文档:
指定角色周围的蒙皮,物理引擎将在其中生成接触。
物理引擎似乎正在使用整个接触的宽度。