unity3d引擎架构设计游戏引擎的体感游戏研究与实现有发展前景吗

有關Kinect结合Unity3D引擎开发体感游戏(二)
你好,想跟你请教个问题:
依照您定義的我建立kinectMoving.cs
我建立一個terrain的scene, 拉入一個Hierarchy組件(如cubes, 內包含階層cube, 準備對應head, spine, ...)
拉入kinectPrefab,&
連接好Kinect設備, 跑rainbowMan_v6正常,&
但跑自訂的scene後, cubes都不會動, 求助
// kinectMoving .cs
using UnityE
using System.C using K public class kinectMoving : MonoBehaviour { & & public int state = 0; & & public float moveSpeed = 12f; & & public SkeletonW & & public GameObject Hip_C & & public GameObject S & & public GameObject H & & public GameObject Hand_L & & public GameObject Hand_R
void Start () { } // Update is called once per frame
void Update () { & & & & JuAction(); } & & public void setHeroState(int newState) & & { & & & & int rotationValue = (newState - state) * 90; & & & & Vector3 transformValue = new Vector3(); & & & & animation.Play(&rainbowMan_v6A&); & & & & switch (newState) & & & & { & & & & & & case 0: & & & & & & & & transformValue = Vector3.forward * 10; &// Time.deltaT & & & & & & & & & & & & & & case 1: & & & & & & & & transformValue = -Vector3.forward * 10; &// Time.deltaT & & & & & & & & & & & & & & case 2: & & & & & & & & transformValue = Vector3.left * 10; &// Time.deltaT & & & & & & & & & & & & & & case 3: & & & & & & & & transformValue = -Vector3.left * 10; // Time.deltaT & & & & & & & & & & & & } & & & & transform.Rotate(Vector3.up, rotationValue); & & & & transform.Translate(transformValue * moveSpeed, Space.World); & & & & state = newS & & & && & & } & & private void JuAction() & & { & & & & Vector3 hip=Hip_Center.transform. & & & & Vector3 handRight = Hand_Right.transform. & & & & Vector3 handLeft = Hand_Left.transform. & & & & Vector3 spine = Spine.transform. & & & & Vector3 head = Head.transform. & & & & & & & & if (handLeft.y & spine.y - 0.1 || handRight.y & spine.y - 0.1) & & & & & & flag = & & & & else & & & & & & flag = & & & & if (flag) & & & & { & & & & & & if (head.x & spine.x - 0.2) & & & & & & { & & & & & & & & setHeroState(0); & & & & & & & & Debug.Log(&Left ... ...&); & & & & & & } & & & & & & if (head.x & spine.x - 0.2) & & & & & & { & & & & & & & & setHeroState(1); & & & & & & & & Debug.Log(&Right ... ...&); & & & & & & } & & & & & & if (head.z & spine.z - 0.1) & & & & & & { & & & & & & & & setHeroState(2); & & & & & & & & Debug.Log(&Front ... ...&); & & & & & & } & & & & & & if (head.z & spine.z - 0.1) & & & & & & { & & & & & & & & setHeroState(3); & & & & & & & & Debug.Log(&Back ... ...&); & & & & & & } & & & & } & & } }
当然的 这个是需要与人物的骨骼绑定的 你后面用的没有这些绑定 后面动的话 可以用别的方法16542人阅读
unity3d(45)
最近公司项目需要做科技馆的体感游戏,以前也没接触过游戏,虽然以前自己也是想做游戏,我想大部分都是学编程出来来做游戏,哈哈(请允许我淫笑一下,终于可以做这方面)。虽然以前没接触过体感游戏,看到的体验也是大部分看到的视频,幸好现在网络还是比较发达,上网大概了体感游戏开发,目前比较好的是Unity3D和Kinect结合交互进行开发。现在心里的感觉用句话说:哥现在也走在世界技术最前言,TMD碉堡了!
&&9月7号开始查阅网上的资料,一直没有找到详尽而又简单的方案。网上目前我看到就三种方法,说是三种方法说白了就一种:中间件。形散而神不散--散文的最高境界(其实我语文不好,对不起祖国气我的期望,呜呜、、、)三种方法如下:
1.卡耐基梅隆的kinectWrapper.unitypackage;
2.OpenNI官方提供的OpenNI_Unity_Toolkit-0.9.7.4.unitypackage(现在官方不提供更新与支持了,支持的版本unity3.4,在往上版本会出现很多问题,需要修改很多地方,比较麻烦);
3.自己写的交互的中间件,我在网上看见高手自己的写的中间件,封装为DLL,现在通过这段时间动手实现,发现自己写一个这样的中间件其实也不难,后期也自己准备写一个。
我在采用的第一种方法,原因上面三点大概说来了,第二点以后考虑支持的版本和官方的态度,所以暂时不考虑;第三种目前自己还没写,目前来说也不太现实,也暂时不考虑考虑。所以目前情况就暂时考虑第一种;
&废话说了那么多,相信各位机油们早就寂寞难耐了,现在就切入正题:
一、Unity和Kinect交互的环境配置
我目前所使用的Unity3D的版本是Unity3.5;
使用的Kinect SDK版本是SDK1.6;
Kinect和Unity交互的卡耐基梅隆的kinectWrapper.unitypackage方法是使用CMU的封装,这个方法支持的Kinect SDK版本是SDK1.0,要想使用1.6版本以上的kinect SDK,就要做一些相应的修改。完整的方案如下(这个也为什么上面说后期打算自己封装一个类似这样组件DLL):
1、安装Uinty3D我使用的Unity3D版本是3.5,上官网下载(需要注册,才能用,我推荐大家去付点钱,我是自己找的破解码,声明不支持这样的行为,大家懂就好)。
2、安装Kinect SDK我使用的SDK版本是1.6,可以在Kinect for Windows官方网站上下载。
3、在Unity3D工程中,如果需要使用和kinect交互,那么就需要在这个工程中导入卡耐基梅隆的kinectWrapper.unitypackage。百度怎么用大家都懂吧(需要用kinect SDK版本是1.6以上版本(1,7以上版本还没试过替换是否可以,理论上应该也可以),就要下载KinectWrapperPackage替换文件并替换导入包中的KinectInterop.cs和KinectSensor.cs这两个文件即可)
好啦!目前准备工作都ok了!
二、简单Kinect Wrapper Package for Unity3D包含了所有我们开发unity+kinect需要用到的脚本。
1.导入包之后,所有我们需要的资源都会出现在project面板中,具体来说是以下的一些资源:
KinectExample - 示例场景,这个例子向你展示了如何通过在每一个kinect 可以追踪的骨骼点上放置小球来产生骨骼运动。
Kinect_Prefab- 包含了我们开发unity+kinect程序所必需的所有脚本。但是它并没有包含你需要的用于控制模型的控制器(controller)。
KinectPointMan - KinectPointController这个控制器(controller)是怎样使用的。
KinectModelControllerV2 - 需要将这个脚本拖放到你想要应用kinect控制的模型上。为了让模型能够跟上人的节奏,你需要将模型上控制模型动作的关键骨骼拖放到这个脚本暴漏的合适的变量中 ,也就是将模型中的骨骼与kincet识别到的人的骨骼绑定起来。另外这个脚本暴漏的变量中,还有一个变量时标识模型是受哪个玩家控制。
KinectPointController - 需要将这个脚本拖放到场景中的游戏物体上。但是这个游戏物体不是模型,而是由一系列分别代表头部、肩部、手等人体部位的点组成。你需要将游戏物体中的这些关键点都拖放到这个脚本暴漏的外部变量中。这样就可以使用kinect控制游戏物体了
DisplayDepth - 得到深度图像。
DisplayColor - 得到RGB图像。
KinectRecorder - 用于记录你的动作,并为kinect模拟器(emulator)产生回放文件。
KinectEmulator - 模拟kinect设备.和KinectRecorder产生的回放文件一起工作。
KinectSensor - 从Kinect设备中取得数据。需要替换这个文件使用特用版本的SDK.
DeviceOrEmulator - 设置使用kinect物理设备还是kinect模拟设备.
SkeletonWrapper - 脚本抓取骨骼数据.
DepthWrapper - 脚本抓取深度图像数据.
KinectInterop - 从Microsoft Kinect SDK中抓取数据.
三、使用KinectWrapperPackage包要想在自己的工程中
首先需要用unity3D创建一个空工程,然后将kinectWrapper.unitypackage导入这个包到unity中,然后经过下面的步骤完成交互。
1、设置Kinect_Prefab前面提到过了,如果在Unity中和Kinect交互,Kinect_Prefab这个游戏物体是必不可少的。 这个物体需要存在于你的场景中的某处。所以当你切换场景时,它仍旧存在着,因此你不必在每个场景中都实例一个Kinect_Prefab。
在Unity3D中,找到project面板中的Kinect_Prefab直接拖拽到Hierarchy面板就可以了。
2、控制游戏中的角色为了控制场景中的角色的移动,你需要将KinectModelControllerV2这个脚本拖拽到场景中的模型上,并绑定骨骼;
当然你为了控制一系列的游戏物体,你需要将KinectPointController拖拽这些物体上。
下面分别说明这个脚本的使用(这两个脚本需要自己更具情况去定制)。
控制器:KinectPointController:
在场景中创建一个空物体对象,作为你想要控制的容器。
将其他的物体拖拽到刚刚创建的空物体中,并放置到相同的位置。使刚才创建的空物体成为这些物体的父节点。
拖拽KinectPointController脚本到这些物体的父节点上。
选中父节点,在Inspector面板中暴漏的变量中,找到Sw变量 (该变量表示Skeleton Wrapper).拖拽当前场景中Kinect_Prefab赋给这个变量。
拖拽你想利用Kinect控制的每一个物体到Inspector面板对应的合适的变量中。
设置Player变量(代表玩家)和Mask变量(代表哪些骨骼收到监控).
控制器:KinectModelControllerV2:
拖拽脚本资源KinectModelControllerV2到场景中的模型中。
选择场景中的模型。找到模型中的暴漏变量Sw(它代表Skeleton Wrapper). 并将当前场景中的Kinect_Prefab拖拽给Sw这个变量。
详细展开你的模型,让模型的每一块骨骼在hierarchy面板中可见。
一个接一个地把模型中的骨骼拖拽到脚本中暴漏的对应的变量中.确保每一个骨骼都对应到了正确的变量上。
当模型中所有的骨骼都放置好了之后,改变暴漏的Player变量的值,这个变量表明该模型是受哪个玩家控制, 0代表第一个玩家,1 代表第二个玩家。
接下来要设置暴漏的Mask变量的值。设置合适的值,以决定是所有的骨骼都受Kinect控制,还是仅仅一部分骨骼受Kinect控制.如果这些受Kinect控制的骨骼都不是你想要的,你可以自己写一个控制模型的脚本来代替KinectModelControllerV2。
当游戏玩家在控制模型时,如果你想要该模型同时播放自带的动画,那么你需要在暴漏的变量中选中animated选项,并设置BlendWeight变量的值,来决定模型受自带模型动画和Kinect驱动动作的最终混合效果。该变量取值范围为0到1之间。
四、运行KinectWrapperPackage包中事例
保证Kinect设备连接成功指示灯为绿色,上面安装包安装配置好,最后运行事例
注意图片的左下角的数字,证明连接成功 ,连接成功的时候Kinect设备还会自己调整角度(最左边的指示灯会有红色)并且模型会随着你动而动
欢迎大家期待第二篇,将写一个3D人物模型,随着身体指示,产生转身和前进与跑步
先上一张图(第二篇会上相关的脚本代码,由于unity脚本主要是c#和js,所以我采用c#写的脚本,9月7号才接触到unity和kinect,原来工作一直用c/c++,c#都是现学现买所以有不当之处,还请大家使劲拍砖):
在此感谢欢乐OSC群 感谢那些机油的鼓励
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1006740次
积分:10968
积分:10968
排名:第1431名
原创:59篇
转载:608篇
译文:36篇
评论:222条
(2)(1)(3)(1)(1)(5)(6)(2)(2)(12)(3)(16)(10)(18)(30)(13)(13)(4)(1)(10)(5)(25)(63)(41)(6)(17)(14)(25)(7)(8)(28)(14)(6)(44)(27)(7)(6)(2)(33)(14)(46)(20)(63)(10)(11)(1)(2)(1)(4)一个基于Unity3d游戏引擎的体感游戏研究与实现_文库下载
1亿文档 免费下载
当前位置: &
& 一个基于Unity3d游戏引擎的体感游戏研究与实现
一个基于Unity3d游戏引擎的体感游戏研究与实现
转载一篇关于体感开发的文章
国外的开发者在体感游戏上的研究还处在探究阶段,在开发出来的展示上也没有提供十分完善的游戏支持,还处在Demo的阶段,没有开发出完整的成品,Kinect作为一个划时代的设备,还具有继续研究学习的潜力;国内的开发者考虑到市场因素,大多数还处在观望的状态,仅有一些关心的开发者开发出来一些小的Demo,与国外有一定的差距。
1.1.3 研究意义
本文研究基于Unity3d的体感游戏的开发[3]。Unity3d作为一款通用的游戏引擎,在游戏的多个平台上都有很多的应用,在国内外使用十分广泛。至今为止,还没有使用Unity3d进行跨平台体感游戏开发的案例,国内外的开发者都还在对体感游戏在PC上运行进行探索学习,体感游戏还处在不断发展的阶段[4]。Microsoft Kinect SDK是微软在2012年2月发布的开发人员使用的SDK,还处在商用测试阶段,提供了包括NUI以及声控的支持,在未来是体感游戏开发的重要工具包,当前并没有成功的案例[5]。本文在分析Unity3d的对外通信接口以及Unity3d插件的基础上,针对当前微软提供的Kinect体感设备,类比了OpenNI中的一些体感游戏实现的常规方法,使用Unity3d作为游戏引擎,Microsoft Kinect SDK以及OpenNI作为开发工具进行体感游戏开发[6]。旨在为未来体感游戏的开发提供最新的研究方向,为研究体感游戏的开发者提供研究资料和成果,推动体感游戏在国内的发展,具有创新以及借鉴参考的意义[7]。
1.2 项目背景介绍
本论文以中山大学动漫实验室对未来体感游戏类型研究为背景,寻找实现一款体感游戏的最佳解决方案,目的是为了推动游戏的发展,同时对新的游戏类型进行探索。
本项目结合使用最新的技术,同时使用了最新的游戏引擎Unity3d[8],开发一款基于Unity3d的体感游戏。游戏具有十分丰富的游戏系统,以实现一款跨平台的体感游戏为目标,游戏有丰富的角色、对抗以及任务系统,提供十分优秀的物理引擎碰撞效果,绚丽的粒子效果,用于开创国内体感游戏的先河,不断缩小与国外体感游戏的水平差距。
Word文档免费下载:(下载1-86页,共86页)
Unity3D游戏开发教程-Unity3D游戏引擎实战开发从入门到精通_计算机软件及应用_IT/...已经实现 了跨平台。 可以在移动端, pc 端和网页端互通了。 一次编码, 发布.....10第4章4.14.2 基于unjty3D引擎的游戏人物动作处理技术实现………ll Unity3D环境下的人物动作导入方法研究………..1lunity3D环境下的人物动作处理技术研究……...基于Unity3D引擎的赛车游戏的设计与实现_互联网_IT/计算机_专业资料。基于Unity3D引擎的赛车游戏 的设计与实现指导教师: ? 班级:软件1001班 LOGO 内容 ?项目概述 ...[转载]Unity3D 游戏引擎最详尽基础教程原文地址:Unity3D 游戏引擎最详尽基础教程作者:ShangShang 我一直向所有想做游戏的朋友推荐 Unity3D,为什么呢?首先是因为与业,...基于Android平台Unity3D游戏设计与实现_计算机软件及应用_IT/计算机_专业资料。文章在介绍Unity3D 引擎的基础上,对基于Unity 的Android 平台游戏设计及实现进行研究。以...Unity3D游戏引擎 创建一个迷你地图_计算机软件及应用_IT/计算机_专业资料。适合初学者今日推荐 四季养生 中医养生与保健 中医养生知识大全 女人养生之道67份文档 九...Unity3D因为极其强大的兼容性得到各大网络游戏公司的亲睐,Unity,也称Unity3D,是近几年非常流行的一个3d游戏开发引擎,跨平台能力强,使用它开发的手机游戏数不胜数。...unity3D游戏开发之photon引擎初尝试_计算机软件及应用_IT/计算机_专业资料。unity...Build script 即 MsBuild 项目的 批处理文件,实现发布应用时候的 编译程序拷贝...游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)_计算机软件及应用_IT/计算机_专业资料。着重介绍三种及时光照的实现方式,技术含量高重要...浅析Unity3D游戏开发优势与前景
目前unity3d的前景怎么样-大家众所周知,福利待遇好,行业也处于上升期间,专业人才缺乏,市场供不应求,那今天蓝鸥上海Unity3d培训中心就从下面几个方面说一下Unity3D游戏开发培训的优势以及发展前景。
1、 不受专业限制:Unity-3D游戏引擎简单清晰、兼容性强,跨平台使用、简单易学、用简单、直观的开发语言,创造不可思议的高薪价值,这是其他开发语言不具备的,同时也是对跨专业人士吸引力之一,本岗位适合经常玩游戏并且对游戏有较强的兴趣,既想玩游戏又想凭借玩游戏开发游戏获得稳定高收入的人员。
2、 人才需要量大:实训周期短,简单易学,用人缺口大,特别是手机游戏和VR目前处于蓬勃发展阶段,本岗位人员绝对供不应求。
3、 就业待遇高:入职起薪年薪6万以上,1年后12万年薪起!并且非常稳定。
4、 行业前景好:Unity游戏引擎的功能无比强大,70%的手机游戏都用此引擎开发,随着VR的兴起从事此专业工作,1-2年后一定可以成为产品经理或产品线总监!
希望以上对你将要学习Unity3D游戏开发你有所帮助!蓝鸥Unity3D开发培训有着国内首家完整的移动Unity3D开发课程体系,蓝鸥科技作为Unity官方授权培训中心,独创“FCBS”教学模式,致力于培养具有实战经验的开发工程师。
在课程设置上,蓝鸥科技Unity3D培训课程体系基于 3D/2D行业人才需求,适合 于游戏开发、多平台交互、虚拟现实、增强现实、科技创意、仿真、建筑可视化等各个行业的人才发展方向。
蓝鸥Unity3d游戏开发培训课程可申请免费两周的试听,试听期间不收费,课程试听申请联系:021-,(沈老师) QQ:.
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
html5前端开发IT职业新贵,10万年薪等你!
Unity官方授权课程,高薪职位任你选!
今日搜狐热点}

我要回帖

更多关于 unity3d体感游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信