当按下时,团结一致地将左键读为右键

问题描述 投票:0回答:1

我是编码和团结的新手,所以我试图制作一个基本的自上而下的射击游戏,但是当我向上和向右按时,如果我向左按并松开,我的动作就会出现问题。右键,播放器会一直向右移动,就像我按了右键一样。相反,这不会发生,我不知道问题出在我的运动代码中,是统一还是键盘上。我的动作脚本如下

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);
    }
}
c# visual-studio unity3d
1个回答
0
投票

这是因为您正在使用rb.AddForce(moveDirection);移动。如果按下该键,则每次固定更新都会在刚体上增加一个力;因此会反复增加力量。

我假设如果您按下并释放键,播放器仍会朝该方向移动。

我建议您使用另一种方式移动播放器。像rb.velocity一样,它更易于使用,而不是AddForce,请尝试:

rb.velocity = moveDirection;

也请阅读documentation of rb.AddForce

© www.soinside.com 2019 - 2024. All rights reserved.