所以,我正在关注 LogRocket 上的新输入第三人称控制器教程。 我的脚本 (PlayerBaseState) 出现了我在标题中提到的错误。而且我不知道如何解决它,Unity 说问题在第 14 行。
using UnityEngine;
public abstract class PlayerBaseState : State
{
protected readonly PlayerStateMachine stateMachine;
protected PlayerBaseState(PlayerStateMachine stateMachine)
{
this.stateMachine = stateMachine;
}
protected void CalculateMoveDirection()
{
Vector3 cameraForward = new(stateMachine.MainCamera.forward.x, 0, stateMachine.MainCamera.forward.z);
Vector3 cameraRight = new(stateMachine.MainCamera.right.x, 0, stateMachine.MainCamera.right.z);
Vector3 moveDirection = cameraForward.normalized * stateMachine.InputReader.MoveComposite.y + cameraRight.normalized * stateMachine.InputReader.MoveComposite.x;
stateMachine.Velocity.x = moveDirection.x * stateMachine.MovementSpeed;
stateMachine.Velocity.z = moveDirection.z * stateMachine.MovementSpeed;
}
}
protected void FaceMoveDirection()
{
Vector3 faceDirection = new(stateMachine.Velocity.x, 0f, stateMachine.Velocity.z);
if (faceDirection == Vector3.zero)
return;
stateMachine.transform.rotation = Quaternion.Slerp(stateMachine.transform.rotation, Quaternion.LookRotation(faceDirection), stateMachine.LookRotationDampFactor * Time.deltaTime);
}
protected void ApplyGravity()
{
if (stateMachine.Velocity.y > Physics.gravity.y)
{
stateMachine.Velocity.y += Physics.gravity.y * Time.deltaTime;
}
}
protected void Move()
{
stateMachine.Controller.Move(stateMachine.Velocity * Time.deltaTime);
}
我不是一个很好的 c# 编码员,但我尝试检查字符以查看它们是否正确,我在其他网站上搜索了更多帮助,但我什么也没找到。