zoukankan      html  css  js  c++  java
  • Kinect小小玩偶游戏----小小潜水员

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

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

    作者:cartzhang


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

    一、游戏说明

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

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


    二、主要的实现接口

    头文件:

     

    	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!
    ---------------

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

     


  • 相关阅读:
    python Elementtree 生成带缩进格式的xml文件
    Tacotron2论文阅读笔记
    opencv3 7.3 重映射 仿射变换
    numpy.ndarray类型方法
    ubuntu安装百度输入法
    gitlab--cicd实践pytest和flask接口化
    django搭建完毕运行显示hello django
    django搭建
    服务器内存
    python安装第三方库aiohtpp,sanio失败,pip install multidict 失败问题
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461959.html
Copyright © 2011-2022 走看看