如何使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.GetKeyX
只能获取在Edit > Project Settings > Input
下指定的密钥。如果密钥与现有密钥不匹配,则需要在其中指定密钥。
如果不需要,只需更改其中一个现有轴,或者更改size
以在上创建一个额外的轴。轴的名称就是您放入Input.GetKeyX
中的名称,例如Input.GetKeyDown("Fire1")
。
编辑:
文档中的一些更深入的信息:https://docs.unity3d.com/Manual/ConventionalGameInput.html