[請益] 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