如何得到两个相同的输入
本文关键字:两个 输入 何得 | 更新日期: 2023-09-27 18:11:36
我正在尝试创造一款Android游戏,但现在却在测试输入按键。我想做的是两次获得"正确"键,但不确定如何。下面是我的代码:
void Update () {
if(Input.GetKeyDown("left"))
{
Debug.Log("in the left zone");
isLeft = true;
}
if(Input.GetKeyDown("right"))
{
isRight = true;
if(Input.GetKeyDown("right"))
{
isDoubleRight = true;
isRight = false;
Debug.Log("in the double right zone");
}
}
}
同样,同样的逻辑也适用于未来的触摸。它是否具有与键输入相同的逻辑?有什么建议吗?
我自己解决了,但不确定它是否正确。希望对大家有所帮助。
if(Input.GetKeyDown("right") && isRight)
{
isDoubleRight = true;
isRight = false;
Debug.Log("in the double right zone");
}
else if(Input.GetKeyDown("right"))
{
isRight = true;
}
first
你自己的回答没有检测到"双击"…它只是切换一个变量每秒钟按下。
更正你的代码的双重按:
using UnityEngine;
using System.Collections;
public class ButtonTest : MonoBehaviour {
float timeOut = 0.25f;
float timeLimit; // the latest time a double-press can be made
string lastButton; // the name of the button last checked
// an example of using "CheckDouble" is in here
void Update (){
if (Input.GetKeyDown("right")) CheckDouble("right");
}
// The function to check for double-presses of a given button
bool CheckDouble (string newButton) {
// if new button press is the same as last, AND recent enough
if(newButton==lastButton && Time.time<timeLimit )
{
timeLimit=Time.time; // expires the double-press
Debug.Log("Double Press");
return true;
}
else
{
timeLimit = Time.time+timeOut; // set new Limit for double-press
lastButton = newButton; // for future checks
Debug.Log("Single Press (so far)");
return false;
}
}
}
这与触摸/点击类似,但要记住:
就像这个函数检查每次按下的是同一个按钮…你还需要传递WHAT/WHERE被触摸/点击和比较-检查某人不只是单点/点击一个项目,然后在不久之后单点/点击一个不同的项目
进一步建议:
从某些东西(称为重载)获得两个相同的输入
系统(如android)有时使用"长按"(点击+按住)而不是双击,我将解释为什么:
想象一下桌面操作系统
1. "第一次点击"通常只是选择一些东西,或者插入一个(有时是假想的)光标。
2. "第二次点击"启动项目,突出显示单词,切换窗口等关键是,"第一次点击"仍然总是发生
为什么?
因为否则每次你点击一次(也许你在键盘上打字,或者只想选择一个东西),它将不得不等待,看看你是否要双击,然后再操作单点击。(反应迟缓)
相反,
有些系统使用长按。一旦按键/触摸被释放(onKeyUp/GetKeyUp);如果在超时时间内,它知道它是一个短按立即,如果它仍然在很长一段时间后,它执行长按动作