I double checked on 的意思应该改为我重新检查了
playerMovement(using UnityEngine;
public class playerMovement : MonoBehaviour
{
private float speed=8f;
private bool isWalking;
private void Update()
{
Vector2 inputV=new Vector2(0,0);
if (Input.GetKey(KeyCode.W))
{
inputV.y=+1;
}
else if (Input.GetKey(KeyCode.S))
{
inputV.y=-1;
}
else if (Input.GetKey(KeyCode.A))
{
inputV.x=-1;
}
else if (Input.GetKey(KeyCode.D))
{
inputV.x=+1;
}
inputV=inputV.normalized;
Vector3 movDir=new Vector3(inputV.x,0f,inputV.y);
transform.position += movDir*speed*Time.deltaTime;
isWalking= movDir != Vector3.zero;
float rotaion_speed=10f;
transform.forward=Vector3.Slerp(transform.forward,movDir,Time.deltaTime*rotaion_speed);
Debug.Log(inputV);
}
public bool Is_Walking()
{
return isWalking;
}
})
我重新检查了playerAnimator(using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playerAnimator : MonoBehaviour
{
[SerializeField] playerMovement player;
private Animator animator;
private void Awake()
{
animator=GetComponent<Animator>();
}
private void Update()
{
animator.SetBool("isWalking",player.Is_Walking());
}
}) 代码,但还是找不到问题。 但是当我将transform.forward=Vector3.Slerp(transform.forward,movDir,Time.deltaTime*rotation_speed) 改为其他地方的时候,并且没有将movDir替换成transform.forward,则角色可以正常移动,但没有身体旋转(显然是这样的)。
评论 (0)