我是编码和团结的新手,所以我试图制作一个基本的自上而下的射击游戏,但是当我向上和向右按时,如果我向左按并松开,我的动作就会出现问题。右键,播放器会一直向右移动,就像我按了右键一样。相反,这不会发生,我不知道问题出在我的运动代码中,是统一还是键盘上。我的动作脚本如下
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playerMovement : MonoBehaviour
{
public float moveSpeed = 10f;
private float horizontalMove = 0f;
private float verticalMove = 0f;
public Rigidbody2D rb;
void Start()
{
}
void Update()
{
horizontalMove = Input.GetAxisRaw("Horizontal") * moveSpeed;
verticalMove = Input.GetAxisRaw("Vertical") * moveSpeed;
}
void FixedUpdate()
{
Vector2 moveDirection = new Vector2(horizontalMove, verticalMove);
rb.AddForce(moveDirection);
}
}
这是因为您正在使用rb.AddForce(moveDirection);
移动。如果按下该键,则每次固定更新都会在刚体上增加一个力;因此会反复增加力量。
我假设如果您按下并释放键,播放器仍会朝该方向移动。
我建议您使用另一种方式移动播放器。像rb.velocity一样,它更易于使用,而不是AddForce,请尝试:
rb.velocity = moveDirection;