我对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;
}
}
}
您的输入代码是正确的,但仍然有几处地方不合适。首先,您在任何函数外部编写了一个初始化程序(静态方法)。请记住,当您在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] 删除。
我来说两句