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

本文关键字:一次 Input 何使 GetKey 函数 Update | 更新日期: 2023-09-27 17:58:45

如果我现在使用GetKeyDown,而KeyDown按"o"键则没有任何作用。但如果我使用GetKey和KeyCode.O,当我按下O键时,角色会停止行走,但我需要一直按O键,如果我松开键,角色会继续行走。

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

我使用速度属性来暂停/继续行走的原因是,如果我要进行:

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

角色停止行走,但场景/世界的其他部分正在向角色移动。当我尝试使用:

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

然后我需要在Play like 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;
    }
}

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

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

如果不需要,只需更改其中一个现有轴,或者更改size以在上创建一个额外的轴。轴的名称就是您放入Input.GetKeyX中的名称,例如Input.GetKeyDown("Fire1")

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