问题描述
我正在用2D
和Visual Studio Code
来开发Unity
平台游戏。到目前为止,我已经建立了以后将在主角和敌人中使用的动画。在主角中,我定义了“水平移动”和“垂直移动”。但是,当我运行游戏时,角色会向上移动,但不会向左或向右移动。
这是我为主要角色准备的代码:
public class Hero : MonobehavIoUr
{
public float vel =10f;
public Animator anim;
private Vector2 moveVeLocity;
float horizontalMove = 0f;
private Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
horizontalMove = Input.GetAxisRaw("Horizontal") * vel;
Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"),Input.GetAxisRaw("Vertical"));
moveVeLocity = moveInput.normalized * vel;
}
void FixedUpdate()
{
Vector2 v = new Vector2 (vel,0);
rb.veLocity = v;
rb.MovePosition(rb.position + moveVeLocity * Time.fixedDeltaTime);
}
}
有人可以告诉我我想念什么吗?
解决方法
如果将代码更改为此,它应该起作用:
void Update()
{
if(Input.GetKeyDown(KeyCode.D))
{
rb.AddRelativeForce(Vector2.right * (vel*Time.deltaTime));
}
else if(Input.GetKeyDown(KeyCode.A))
{
rb.AddRelativeForce(Vector2.left * (vel*Time.deltaTime));
}
}
由于您在游戏对象上附加了刚体,因此在用户按下D / A时向对象添加相对力将是有意义的,而不仅仅是更改对象的变换位置。这应该起作用。
,基本上,您可以在输入管理器的“编辑”>“项目设置”>“输入”下设置水平向上移动。仔细检查水平轴是否设置在左右按钮上。