【问题标题】:Unity reading the left key as the right key when pressing upUnity 向上按时读左键为右键
【发布时间】:2020-06-02 20:41:07
【问题描述】:

编辑:问题只出现在箭头键上,wasd 键工作正常,所以我猜测问题出在我的键盘上,但不完全确定。

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

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# unity3d


    【解决方案1】:

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

    我假设如果你按下并释放它,玩家仍然会朝那个方向移动。

    我建议您使用其他方式移动播放器。和rb.velocity一样,用起来更方便,而不是AddForce,试试:

    rb.velocity = moveDirection;
    

    另外,请阅读documentation of rb.AddForce

    编辑

    好的,问题可能出在键盘上。 我们现在需要测试它是否属实。 Input.GetAxis 方法在Edit > Project Settings > Input 中配置,如果方向键有问题,我们应该尝试使用其他键。在输入菜单中找到水平轴和垂直轴,然后将 Positive ButtonNegative Button 更改为另一个键,然后使用这些键重试。

    您可以在Input Manager documentation 中阅读有关轴设置的更多信息。

    【讨论】:

    • 我使用了 rb.velocity,但它并没有解决问题,而且 wasd 键工作正常,问题出在箭头键上,将其编辑到帖子中
    • 我只是编辑我的答案。尝试更改输入设置,因此您可以使用其他键而不是箭头键来测试问题是否出在键盘上。
    • 是的,我更改了 unput manager 上的按键,问题就停止了,我会尝试在其他键盘上测试我的游戏,看看它是否也会发生,但我会接受你的回答,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多