如何让 Input.GetKey 在 Update 函数中被按下一次?
How do i make Input.GetKey to be pressed once inside Update function?
如果我像现在一样使用 GetKeyDown 而不是 KeyDown,则按下 "o" 键什么都不做。
但是如果我使用 GetKey 然后 KeyCode.O 当我按下 O 键时角色停止行走但是我需要一直按下 O 键如果我释放键角色将继续行走。
我想要做的是,当我点击一次 O 键时,角色将停止行走,即使在释放键时也是如此,然后如果我点击 "p" 键,它将恢复行走。
我使用速度 属性 进行 pause/continue 行走的原因是如果我将:
gameObject.GetComponent<Animator> ().Stop();
角色停止行走,但 scene/world 的其余部分正在向角色移动。当我尝试使用时:
gameObject.GetComponent<Animator> ().Play();
然后我需要像 Play("Walk") 一样在 Play 中添加一些参数,但它没有用。
这就是为什么我决定将速度 属性 用于 pause/continue。
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
如果我像现在一样使用 GetKeyDown 而不是 KeyDown,则按下 "o" 键什么都不做。 但是如果我使用 GetKey 然后 KeyCode.O 当我按下 O 键时角色停止行走但是我需要一直按下 O 键如果我释放键角色将继续行走。
我想要做的是,当我点击一次 O 键时,角色将停止行走,即使在释放键时也是如此,然后如果我点击 "p" 键,它将恢复行走。
我使用速度 属性 进行 pause/continue 行走的原因是如果我将:
gameObject.GetComponent<Animator> ().Stop();
角色停止行走,但 scene/world 的其余部分正在向角色移动。当我尝试使用时:
gameObject.GetComponent<Animator> ().Play();
然后我需要像 Play("Walk") 一样在 Play 中添加一些参数,但它没有用。
这就是为什么我决定将速度 属性 用于 pause/continue。
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