在按住键

时间:2017-10-04 00:34:09

标签: c# unity3d

在Unity文档中,Input.getKeyUp说

  

在用户释放由名称

标识的密钥的框架中返回true

我的脚本是:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveSphere : MonoBehaviour {
    public float speed = 5;

    void Update () {
        Vector3 pos = transform.position;
        if (Input.GetKey (KeyCode.LeftArrow)) {
            pos.x -= Time.deltaTime * speed;
            transform.position = pos;
        } else if (Input.GetKeyUp (KeyCode.Space)) {
            Debug.Log ("Space key up");
            pos.y += Time.deltaTime * speed;
            transform.position = pos;
        }
    }
}

现在Input.GetKey(KeyCode.LeftArrow)正如我预期的那样工作,所以如果我按住它,我的对象会不断移动到左边。但是,当我按下空格键时,我希望我的对象能够“跳转”,但我不希望它在空格键保持时连续上升,这就是为什么我使用Input.GetKeyUp而不是GetKey然而当我按住空格键,它不断向上移动。

当空格键被按住时,我怎么能这样做呢?除了当我松开空格键时它向上移动。

1 个答案:

答案 0 :(得分:0)

我真的不知道为什么它会以这种方式表现,但如果我是你,我会考虑在另一个if()子句中进行每次密钥检查,而不是{{1} } 您正在使用。尝试这样写,看它是否有效。

此后

  

然而,我希望我的对象能够跳过"跳跃"当我按空格键时

我会按else if()

更改GetKeyUp
GetKeyDown