# Day 26 | 使用ManoMotion製作Flappy Bird遊戲 Part2 - ManoMotion偵測Grab動作並往上飛 ###### tags: `Unity` `ManoMotion` `AR手遊` 上一篇已將障礙物山的建置與移動做好,今天要來做帝江的跳躍。 > **目錄** > ManoMotion手部Grab動作偵測 > Grab觸發跳躍 ## ManoMotion手部Grab動作偵測 ### STEP 1 ManoMotionFrameUpdate 函式 宣告處理ManoMotion每個Frame更新函式,在裡面寫下Frame更新時要執行的動作。 * 宣告一個Gesture,從ManoMotionManager中取得的手部動作的資訊。 * 宣告一個Warning,取得ManoMotionManager在取得動作資訊時是否有出現錯誤。 ``` void HandleManoMotionFrameUpdated(){ GestureInfo gesture = ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info; Warning warning = ManomotionManager.Instance.Hand_infos[0].hand_info.warning; GestureTigger(gesture, warning); } ``` ### STEP 2 Gesturetrigger函式 宣告用來接收Trigger觸發的函示後,查找ManoGestureTrigger的列舉型別,找到待會會用到的Grab_GESTURE。 ``` public enum ManoGestureTrigger { NO_GESTURE = -1, CLICK = 1, GRAB_GESTURE = 4, DROP = 8, PICK = 7, RELEASE_GESTURE = 3 }; ``` 以FrameUpdate中的gesture 和 warning作為引數,如果Warning的值不是"找不到動作",就繼續判斷接收到的動作,是否為我們要的"Grab",一旦接受的了"Grab",就執行往上飛函式Fly()。 ``` void GestureTigger(GestureInfo gesture, Warning warning){ if (warning != Warning.WARNING_HAND_NOT_FOUND) { if (gesture.mano_gesture_trigger == ManoGestureTrigger.GRAB_GESTURE) { fly(); } } } ``` 最後在操作在腳本Start函式中,添加持續更新ManoMotion偵測的程式碼。 `ManomotionManager.OnManoMotionFrameProcessed += HandleManoMotionFrameUpdated;` ## 往上飛 在帝江掛上Rigidbody2D(因為是UI物件),往上飛就是往正向y軸增加velocity,使用Velocity.up(相當於使用new Velocity2(0,1,0))來 * flyForce(向上施加的力),可以依照自己想要飛的方式來調整數值大小,如果想要更符合物理,可以依照運動曲線作調整數值。 ``` public void fly() { rigid.velocity = Vector2.up * flyForce; } ``` --- 以上就是帝江版的Flappy Bird小遊戲系列,我們的各類小遊戲製作介紹就到這邊告一段落啦,明天要分享遊戲的對話與介面製作,那我們明天見囉!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up