
在看视频教程时,看到视频中为实现跳跃功能,将向上按键的检测放在了 FixedUpdate 中,但是实际 *** 作时,经常会遇到按了没反应。
将按键检测放在 Update 中即可
因为FixedUpdate存在漏帧的情况,它是基于秒的,或者准确的说是基于物理步更新,放在物理步的函数中处理本身就是错误的做法
模拟键盘
>
private bool isPress=false;
void OnGUI()
{
if(GUIButton(new Rect(0,0,50,50),"按钮"))
{
isPress = true ;//表示按下了
}
else
{
isPress = false;//表示松开了
}
}
做游戏少不了控制,但是一个成熟的游戏引擎,是不能简单仅仅获取键盘中或者遥感确定的按键来控制,要考虑到用户更改游戏按键的情况,当然也得考虑到不同设备的不通输入方式,比如U3D是可以运行在iphone上的,iphone可没有键盘和上下左右键,他有平衡控制(简单化解为水平和垂直两个方向度数),如果用户使用飞行或者汽车方向盘手柄,那就不能简单用一个按键来描述了,需要有一个度数的问题(也可以简单分解为水平和垂直两个方向度数)。
U3D提供了一个Input类封装控制(按键)输入系统。
问题一:
我认为可以设定一个int值比如escapeTimes初始值设为1;当检测到“InputGetKey(KeyCodeEscape)”后escapeTimes++;然后
if(InputGetKey(KeyCodeEscape) escapeTimes ; 1)
{
ApplicationQuit();
}
最后通过协同函数检测如果按两次返回键时间间隔过长,则重置。具体代码(C)如下:
int escapeTimes = 1;
void Update()
{
if(InputGetKey(KeyCodeEscape))
{
//这个地方可以写“再按一次退出”的提示
escapeTimes++;
StartCoroutine(;resetTimes;);
if(escapeTimes ; 1)
{
ApplicationQuit();
}
}
}
IEnumerator resetTimes()
{
yield return new WaitForSeconds(1);
escapeTimes =1;
}
关于JavaScript怎么用Coroutine协同函数你可以百度一下,转换一下就行,很简单。
问题二:
这应该是关于UI分辨率适配的问题。你可以试一下NGUI插件,我认为是一款很好的UI插件,完全可以代替Unity自身的UI。NGUI可以使用锚点“Anchor”,可以将UI固定在任意需要的位置。
完全手写,木有功劳有苦劳哦~~
以上就是关于Unity 接收不到键盘按下的事件全部的内容,包括:Unity 接收不到键盘按下的事件、unity如何导入win api来模拟键盘按键的事件、UNITY3D 怎么获得GUI按键按下状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)