本文章由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!
---------------

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

 

最新文章

  1. await and async
  2. 3-4 linux 用户及权限管理
  3. xml 基础学习备忘
  4. android 5.0 水波纹 实现
  5. XmlBeanFactory的Bean加载
  6. # 20145210 《Java程序设计》第03周学习总结
  7. 关于offsetWidth,clientWidth,与jquery的width()方法
  8. Hibernate逍遥游记-第2章-使用hibernate.properties
  9. Static Classes and Static Class Members
  10. divmod数字处理函数
  11. Java中 hashCode()方法详解
  12. 优化EF性能
  13. 【HOSTS相关】什么时候使用127.0.0.1
  14. [编织消息框架][网络IO模型]Netty Reactor
  15. WPA-PSK无线网络密码破解原理
  16. 解析 ViewTreeObserver 源码(上)
  17. docker重新安装后无法启动
  18. [转载]jdk环境变量配置方法
  19. Python中的赋值和拷贝
  20. bzoj2783 树

热门文章

  1. 笔记四:onsubmit和onclick的区别
  2. 自绘listCtrl控件选中该行高亮(模拟windows)
  3. Direct2D开发:MFC下从资源文件中加载位图
  4. Android抖动的EditText
  5. c++ 常识
  6. 【Codeforces Round #450 (Div. 2) A】Find Extra One
  7. java与javax的区别分析
  8. [Angular] Http Custom Headers and RequestOptions
  9. Project Euler 613 Pythagorean Ant(概率+积分)
  10. 硬件——STM32,ADC篇