尝试弄清楚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>();
}
}
我知道我犯了一个愚蠢的错误,但不知道如何弥补它。提前感谢任何帮助。
1条答案
按热度按时间sr4lhrrt1#
你可以通过多种方式获得值,更简单的是通过检查器使用PlayerInput组件链接它,并将行为字段标记为Invoke Unity Events,然后拖放你的组件来响应输入(记住方法签名必须是相同的)。你可以在这里进一步阅读https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Components.html