问题描述
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 (将#修改为@)