我的角色可以向前走,但是当我按下" w" (前进)和" a" (左)然后释放" a"他回到原来朝向前方的方向走路。
好像控件让他按照指南针走路。每次WASD键将他转向同一方向,W为北,S为南,无论他的方向如何。
我注意到我的Turn参数,它是一个浮动,当我转动时开始移动,但慢慢地重置为零,将我的角色转回到北方向。有任何想法吗?谢谢!
答案 0 :(得分:0)
我不确定你的意思,但这就是我让我的玩家移动的方式*
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float walkSpeed;
public float runSpeed;
public float turnSpeed;
void Update()
{
invControl = GetComponent<InventoryController>();
if (Input.GetKey(KeyCode.W))
{
WalkForward();
}
if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.LeftShift))
{
RunForward();
}
if (Input.GetKey(KeyCode.S))
{
WalkBack();
}
if (Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.LeftShift))
{
RunBack();
}
if (Input.GetKey(KeyCode.A))
{
TurnLeft();
}
if (Input.GetKey(KeyCode.D))
{
TurnRight();
}
}
void WalkForward()
{
transform.Translate(Vector3.forward * walkSpeed * Time.deltaTime);
}
void WalkBack()
{
transform.Translate(Vector3.back * walkSpeed * Time.deltaTime);
}
void RunForward()
{
transform.Translate(Vector3.forward * runSpeed * Time.deltaTime);
}
void RunBack()
{
transform.Translate(Vector3.back * runSpeed * Time.deltaTime);
}
void TurnLeft()
{
transform.Rotate(Vector3.down * turnSpeed * Time.deltaTime);
}
void TurnRight()
{
transform.Rotate(Vector3.up * turnSpeed * Time.deltaTime);
}
}
答案 1 :(得分:0)
听起来你正在使用Input.GetAxis()
来控制你的角色(就像大多数人一样),只要你没有按下与之相关的键,它就会重置为0。这就是导致您的转弯参数重置的原因。
我认为你控制玩家所需的任何代码都是有缺陷的。我无法帮助你,因为你没有发布任何代码。