Unity-检测键盘输入

乔恩

我对Unity并不陌生,并且一直在线查找大量的教程/指南。我的问题是,由于某种原因,当我使用以下代码时,它无法检测是否单击了键盘。也许我在做键盘检测错误。这是我的代码:

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {

    Vector3 player = GameObject.FindGameObjectWithTag("Player").transform.position;

    void Update () {
        if (Input.GetKeyDown(KeyCode.D)) {
            player.x += 0.01F;
        }
    }
}
哈姆扎·哈桑(Hamza Hasan)

您的输入代码是正确的,但仍然有几处地方不合适。首先,您在任何函数外部编写了一个初始化程序(静态方法)。请记住,当您在Unity3d C#中执行此操作时,它将始终向您发出警告/错误。

如果使用的是C#,请不要在构造函数或字段初始化程序中使用此函数,而应将初始化移至Awake或Start函数。

因此,首先在任一函数中移动此类行。

第二件事是您要获取Vector3并尝试将其用作参考,这意味着您以的形式获得了职位参考,Vector3并且对该变量进行的每次更改都会有效,事实并非如此,事实并非如此。

但是,可以的,您可以通过获取Transform或来完成GameObject,他们会为您完成。

第三,也是最后一件事,您正在尝试直接更改Vector3组件(在您的情况下为“ x”),这对于Unity也是不可接受的。您可以做的是分配位置new Vector3或创建一个单独的Vector3变量,对其进行更改,然后将其分配给位置。

因此,在所有这些地址之后,您的代码应如下所示:

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
    Transform player;

    // Use this for initialization
    void Start ()
    {
        player = GameObject.FindGameObjectWithTag ("Player").transform;
    }

    // Update is called once per frame
    void Update ()
    {

        if (Input.GetKeyDown (KeyCode.D)) {

            // Remove one of these two implementations of changing position

            // Either
            Vector3 newPosition = player.position;
            newPosition.x += 0.01f;
            player.position = newPosition;

            //Or
            player.position = new Vector3 (player.position.x + 0.01f, player.position.y, player.position.z);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章