在Update函数中如何使Input.GetKey被按下一次?

时间:2016-07-26 14:40:11

标签: c# unity3d unityscript unity5

如果我现在使用像GetKeyDown而不是KeyDown按下键“o”什么都不做。 但是如果我正在使用GetKey然后KeyCode.O当我按下O键时,角色会停止行走但我需要一直按下O键,如果我释放按键,角色将继续行走。

我想要做的就是当我点击一次按键O时,即使释放按键,角色也会停止行走,然后如果我点击“p”键,它将恢复行走。

我使用speed属性暂停/继续行走的原因是,如果我将:

gameObject.GetComponent<Animator> ().Stop(); 

角色停止行走,然后场景/世界的其余部分移动到角色。当我试图使用时:

gameObject.GetComponent<Animator> ().Play();

然后我需要在Play中播放一些参数(“Walk”),但它不起作用。

这就是为什么我决定使用speed属性进行暂停/继续。

using UnityEngine;
using System.Collections;

public class Ai : MonoBehaviour {

    Animator _anim;
    // Use this for initialization
    void Start () {

        _anim = GetComponent<Animator> ();
    }


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

        if (Input.GetKey (KeyCode.Z)) {
            _anim.speed = 20.0f;
        }

        if (Input.GetKeyDown ("o"))
            gameObject.GetComponent<Animator> ().speed = 0;
        if(Input.GetKeyDown("p"))
            gameObject.GetComponent<Animator>().speed = 2;
    }
}

1 个答案:

答案 0 :(得分:1)

Input.GetKeyX只能获取Edit > Project Settings > Input下指定的密钥。 如果它与现有密钥不匹配,则需要在那里指定密钥。

如果您不需要,可以更改现有的一个或更改size以创建额外的。轴的名称是您放入Input.GetKeyX的内容,例如Input.GetKeyDown("Fire1")

编辑:
文档中的一些更深入的信息:https://docs.unity3d.com/Manual/ConventionalGameInput.html