如何解决旋转不整洁的3d控制器问题
ive按照第三人称角色控制器上的教程进行操作,但我可以使用它,但是他没有包含摄像头功能,现在我尝试自己添加它们,但是按[w]键时效果不太好,我稍微向左移动当我按“ s”时,我会旋转。 medium article播放一段视频,以了解发生了什么。
我使用了本教程和代码:https://youtu.be/EE0Rx-wJa5A
using UnityEngine;
public class Movement : MonoBehaviour
{
[SerializeField] private float movementSpeed = 2f;
private float currentspeed = 0f;
private float speedSmoothVelocity = 0f;
private float speedSmoothTime = 0.1f;
private float rotationSpeed = 0.1f;
private float gravity = 3;
private Transform mainCameraTransform = null;
private CharacterController controller = null;
private Animator animator = null;
private void Start ()
{
controller = GetComponent<CharacterController>();
animator = GetComponent<Animator>();
mainCameraTransform = Camera.main.transform;
}
private void Update ()
{
Move();
}
private void Move ()
{
Vector2 movementInput = new Vector2(Input.GetAxisRaw("Horizontal"),Input.GetAxisRaw("Vertical"));
Vector3 forward = mainCameraTransform.forward;
Vector3 right = mainCameraTransform.right;
forward.y = 0;
forward.Normalize();
right.Normalize();
Vector3 desiredMoveDirection = (forward * movementInput.y + right * movementInput.x).normalized;
Vector3 gravityVector = Vector3.zero;
if(!controller.isGrounded)
{
gravityVector.y -= gravity;
}
if(desiredMoveDirection != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(desiredMoveDirection),rotationSpeed);
}
float targetSpeed = movementSpeed * movementInput.magnitude;
currentspeed = Mathf.SmoothDamp(currentspeed,targetSpeed,ref speedSmoothVelocity,speedSmoothTime);
controller.Move(desiredMoveDirection * currentspeed * Time.deltaTime);
controller.Move(gravityVector * Time.deltaTime);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。