Day 26 | 使用ManoMotion制作Flappy Bird游戏 Part2 - ManoMotion侦测Grab动作并往上飞

上一篇已将障碍物山的建置与移动做好,今天要来做帝江的跳跃。

目录
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小游戏系列,我们的各类小游戏制作介绍就到这边告一段落啦,明天要分享游戏的对话与介面制作,那我们明天见罗!


<<:  图的最小产生树 - DAY 26

>>:  各式各样的演算法 - Greedy、Dynamic Programming 与 Divide and Conquer

[Day26] Scrum失败经验谈 – Daily scrum变成daily report

在Scrum的机制里,每天的站立会议(Daily standup meeting)是一个极小体现Sc...

30天零负担轻松学会制作APP介面及设计【DAY 11】

大家好,我是YIYI,今天我要利用MARVEL将前面三个介面做出连结。 制作介面连结 首先,先进入昨...

Day17|【Git】存在 .git 目录里的东西 - Blob 物件与 Tree 物件(上)

Git 有四种 type (类型) 的物件:blob、tree、commit 和 tag。 本篇主要...

Windows event 59 sidebyside invalid

工作上遇到了些问题纪录一下 因作业关系,修改了服务中的设定档 服务启动发生错误: 错误14001 使...

安装seldon

上一篇, 我们已使用 xgboost 完成训练并且产生model档, 这个model的档名为bst_...