[请益] unity长按的设定

楼主: kagami91582 (GaryJ)   2015-09-23 13:01:27
在之前询问了Update()的细节后 自己有去改了一下
不过还是有一些问题
主要设定的程式是这样子
void Update(){
for (int i = 0; i < NumStrings; ++i) {
ButtonsJustPressed [i] = false;
CheckKeyCode (StringKeys [i], i);
}
}
void CheckKeyCode( KeyCode code, int stringIndex ){
if( Input.GetKeyDown( code ) )
{
OnStringChange( stringIndex, true );
}
if( Input.GetKey( code ) && !ButtonsPressed[ stringIndex ] ){
OnStringChange( stringIndex, true );
}
if( Input.GetKeyUp( code ) ){
OnStringChange( stringIndex, false );
}
}
若是在物品落下时 利用长按的方法去接住 要怎么改比较好?
作者: cjcat2266 (CJ Cat)   2015-09-23 14:26:00
按下flag = true,放开flag = falseif (flag && 物件碰到) 接住();
作者: laikyo (六元)   2015-09-23 17:09:00
你要不要看一下Input.GetKey官方描述...
楼主: kagami91582 (GaryJ)   2015-09-23 23:34:00
其实看了很久还是看不懂(泪
作者: tomnelson   2015-09-24 01:05:00
docs.unity3d.com/ScriptReference/Input.GetKey.htmlInput.GetKey不就是当按键一直被按住没放开时会returntrue吗? 你应该是 GetKeyDown/GetKey/GetKeyUp 三个状态处理那边没搞好,往那方向去思考一下吧!我的想法是GetKeyDown(x)后设flag(x)=true,当GetKey(x)为true且flag(x)=true维持一段时间,就去做长按的事,而GetKeyUp(x)=true且flag(x)=true时,将flag(x)设成false至于"维持一段时间"那部份,可能你要试验看看,或许用counter(x)=counter(x)+1的方式就可以,未必要用到时间docs.unity3d.com/ScriptReference/Time.html里头的 deltaTime (Time.deltaTime) 之类的,总之,你就动手&再动脑试试囉~
楼主: kagami91582 (GaryJ)   2015-09-24 01:50:00
感谢提点 之后我是这样子改啦http://i.imgur.com/wW9CweW.png按下一个key然后不放开这样 的确有接到物品了虽然目的是要让他同时跑两个啦~ 但已经先从无线循环跳出来了 再次感谢(泪不然已经鬼打墙一段时间 自己英文又无敌废(炸
作者: tomnelson   2015-09-24 02:43:00
有从 loop 里出来就好~ 恭喜!

Links booklink

Contact Us: admin [ a t ] ucptt.com