本文章由cartzhang编写,转载请注明出处。 所有权利保留。

文章链接: http://blog.csdn.net/cartzhang/article/details/44939887

作者:cartzhang

Kinect小小玩偶游戏----小小潜水员

一、游戏说明

通过Kinect控制小玩偶来玩Unreal游戏,左右手抬起可左右移动;右手举过头顶,可跳起;还可以发射蜗牛子弹来攻击小鱼。使用UE4的2D效果来实现。

先睹为快,萌萌哒的小小主角:

二、主要的实现接口

头文件:

	UFUNCTION(BlueprintCallable, Category = KINECTUE)
void HandState(const int32 HandType); UFUNCTION(BlueprintCallable, Category = KINECTUE)
void StartCheckHandsPushDriveHand(); UFUNCTION(BlueprintImplementableEvent, meta = (FriendlyName = "Right Hand Push"))
virtual void RightHandPush(); UFUNCTION(BlueprintImplementableEvent, meta = (FriendlyName = "Left Hand Push"))
virtual void LeftHandPush(); UFUNCTION(BlueprintImplementableEvent, meta = (FriendlyName = "Left Hand Move"))
virtual void LeftHandMoveLeft(); UFUNCTION(BlueprintImplementableEvent, meta = (FriendlyName = "Right Hand Move"))
virtual void RightHandMoveRight(); void RightHandOverHeadForJump();

实现文件,cpp文件:

void ATwoDPaperCharacter::HandState(const int32 HandType)
{
int iFlag = UDKinectHandsReachOutGesture(0, HandType);
if (GEngine && iFlag == 1)
{
const float fMoveSpeed = 1.0f;
switch (HandType)
{
case 1:
LeftHandMoveLeft();
break;
case 2:
RightHandMoveRight();
break;
default:
break;
}
}
} void ATwoDPaperCharacter::StartCheckHandsPushDriveHand()
{
int iRightFlag = UDKinectRightHandPushGesture(USER_INDEX);
if (iRightFlag == 1)
{
RightHandPush();
} int iLeftFlag = UDKinectLeftHandPushGesture(USER_INDEX);
if (iLeftFlag == 1)
{
LeftHandPush();
}
} void ATwoDPaperCharacter::RightHandOverHeadForJump()
{
int iRightHandOverHeadFlag = UDKinectRightHandOverHeadGesture(0);
if (GEngine && iRightHandOverHeadFlag == 1)
{
FString TmpString = "Right Hand Over Head now...";
//GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TmpString);
Jump();
}
}

三、Blueprint 实现截图(部分)

其中逻辑控制,只展示部分。因为太多了,各个函数也复杂。

下图为受到攻击的Blueprint。

下面为控制的BP。

发射蜗牛导弹的射击Blueprint。

四、游戏截图

主要包括,左右移动,跳起,左边发射攻击,右边发射子弹攻击,被小鱼咬到的受伤级别。

从上面两张图,可看到小潜水员受到小鱼的攻击而变化了颜色。

其中,根据受伤程度不同,共有6种颜色变换。

小小潜水员在向左右发射蜗牛导弹,来攻击小鱼。

五、游戏视频

视频已经上传到Youku.

地址如下:http://v.youku.com/v_show/id_XOTI4NjUyMzIw.html

Kinect小小超级玩偶--小小潜水员



THE END!
---------------

若有问题,请随时联系。
非常感谢!

 

Kinect小小玩偶游戏----小小潜水员的更多相关文章

  1. 第三章—Windows程序

    这一章我都不知道该如何写了,呵呵~~ 毕竟,Win32是一个非常深奥的系统,目前还容不得我这种 小辈在这儿说三道四,不过,我既然是要写给那些入门阶段的朋友们看的,又不是写给那些搞程序设计老鸟看的,所以 ...

  2. 用js立即执行函数开发基于bootstrap-multiselect的联动参数菜单

    代码调用方式如下: data=[{F0:总分类cd,F1:总分类name,F2:大分类cd,F3:大分类name,F4:中分类cd,F5:中分类name,F6:小分类cd,F7:小分类name},.. ...

  3. JavaScript 对象的创建和操作

    <script>         // 对象是属性的无序集合,每个属性都是一个名/值对. 属性名称是一个字符串.         // 对象种类         // 内置对象(nativ ...

  4. 【Python】(六)Python数据类型-列表和元组,九浅一深,用得到

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文分十个章节介绍数据类型中的列表(list)和元组(tuple),从使用说到底层实现,包您满意 干货满满,建议收藏,需要用到时常看看. 小伙伴们 ...

  5. 大闸蟹的OO第二单元总结

    OO的第二单元是讲多线程的协作与控制,三次作业分别为FAFS电梯,ALS电梯和三部需要协作的电梯.三次作业由浅入深,让我们逐渐理解多线程的工作原理和运行状况. 第一次作业: 第一次作业是傻瓜电梯,也就 ...

  6. (转)小小科学家的归来 by 王珢

    小小科学家的归来 by 王垠很多人来信关心我的现状,所以在写别的技术性文章之前,先说说我现在的情况吧.虽然自己追求的东西和经历都比较不同寻常,但是也许可以给奋斗中的人们一些慰藉和鼓励. 首先是超级好消 ...

  7. canvas学习笔记:小小滴公式,大大滴乐趣

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 最近想弄一个网页,把自己学HTML5过程中做的部分DEMO放上去做集合,但是,如果就仅仅做个网页把所有DEMO一个一个排列又觉得太难看了. ...

  8. hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)

    小小明系列故事——游戏的烦恼 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  9. PHOTOSHOP 中画笔工具和铅笔工具的一个小小差别

    今天在作图的时候偶然发现的一个以前并没有在意画笔和铅笔的小小区别,情况是这样的,我在做图像处理,需要一个单像素的闭合曲线灰度图来做实验,然后用画笔工具把直径调到1之后去作图,放大之后发现,跟预想的结果 ...

随机推荐

  1. [JWT] JWT with HS256

    The advantages of JWT over traditional session based validation is: it effectively removing all auth ...

  2. android 4.4 添加物理按键

    kernel下添加 Linux-3.4/drivers/input/keyboard/Makefile linux-3.4/drivers/input/keyboard/sw-keyboard.c s ...

  3. springMVC视图解析器——InternalResourceViewResolver(转)

    springmvc在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器. springmvc里提供了多个视图解析器,InternalResourceViewResolver就 ...

  4. c++中的相对路径

           今天在vs2010里读取相对路径下的图片文件出了点问题.于是查了一下相对路径的编程知识,记录下来分享给大家:      问题描写叙述:path=".\\TrainData\\& ...

  5. Python Tricks(二十)—— 阶乘的极简实现

    使用 reduce # 比如计算 9 的阶乘 >> reduce(lambda x, y: x*y, range(1, 9+1)) 362880 当然这里的 reduce 直接返回具体的数 ...

  6. 很安逸的离线API文档查询工具Dash和Zeal

    大家开发的时候难免会查询一些文档,看一下API的调用方法等,所以会不同的语言去某一个地方去找,确实很麻烦,今天给大家安逸两款软件,肯定会让你爱不释手! Dash for macOS 官方地址:http ...

  7. [Angular] Intercept HTTP requests in Angular

    Being able to intercept HTTP requests is crucial in a real world application. Whether it is for erro ...

  8. [D3] Select DOM Elements with D3 v4

    Before you can create dazzling data driven documents, you need to know how D3 accesses the DOM. This ...

  9. 动词 + to do、动词 + doing

    1. 含义有重大区别 动词+to do 与 动词 + doing,具有较大含义上的差别的动词主要有: stop finish forget 在这些单词的后面,自然 to do 表示未做的事,doing ...

  10. Android android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1

    Android中数据库处理使用cursor时,游标不是放在为0的下标,而是放在为-1的下标处开始的. 也就是说返回给cursor查询结果时,不能够马上从cursor中提取值. 下面的代码会返回错误 U ...