unity3d 使用Unity的新输入系统,如何从我创建的一维轴中获取值?

egdjgwm8  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(227)

尝试弄清楚Unity的新输入系统。我已经将动作设置为1D轴,其中W是正方向,S是负方向。https://ibb.co/gTWGd2W。有一个“玩家输入”组件,其中的动作脚本是。https://ibb.co/ZzmsszV。脚本如下。我正在尝试从1D轴获取值,并将其应用于更新中的球拍。但是我用value.Get()引用的是什么值;显然是不正确的,因为它总是返回0。我不知道我应该参考什么,甚至不知道如何找到这些信息。我花了几个小时搜索,但不能找出我需要什么

using UnityEngine;
using UnityEngine.InputSystem;

public class PaddleBehaviour : MonoBehaviour
{
    public GameObject leftPaddle;
    public GameObject rightPaddle;

    public float moveValueLeft;
    public float moveValueRight;

    public int moveSpeed = 10;

    void Update()
    {
        leftPaddle.transform.Translate(new Vector3(0, moveValueLeft, 0) * moveSpeed * Time.deltaTime);
        rightPaddle.transform.Translate(new Vector3(0, moveValueRight, 0) * moveSpeed * Time.deltaTime);
    }

    void OnMovement(InputValue value)
    {
        moveValueLeft = value.Get<float>();
        moveValueRight = value.Get<float>();
    }
}

我知道我犯了一个愚蠢的错误,但不知道如何弥补它。提前感谢任何帮助。

sr4lhrrt

sr4lhrrt1#

你可以通过多种方式获得值,更简单的是通过检查器使用PlayerInput组件链接它,并将行为字段标记为Invoke Unity Events,然后拖放你的组件来响应输入(记住方法签名必须是相同的)。你可以在这里进一步阅读https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Components.html

相关问题