版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HTCVive开发入门篇单击输入您的封面副标题第1课创建VR项目单击输入您的封面副标题第一步,运行UnityHub,点击【新建】按钮。第二步,参考下图设置内容,点击【创建】按钮。创建完新工程后,进入Unity3D开发界面。第三步,导入SteamVRPlugin。菜单Assets-ImportNewAssets.或者直接将SteamVRPlugin.package文件拖拽到编辑器Assets文件夹中。点击Import按钮。点击AcceptAll按钮。这样,开发VR应用的环境搭建完毕。第四步,关联VS2019.(1)运行Unity3D编辑器,使用菜单命令Edit—Preferences(2)在弹出的窗口中,选择ExternalTools,在右侧ExternalScriptEditor属性,点击Openbyfileextension(3)点击Browse按钮,选择VS安装路径下的devenv.exe应用程序。(4)最终结果如图所示。选择菜单命令Asets—Create—C#使用默认的名字NewBehaviourScript,按回车键确定。双击该文件,系统调用VisualStudio2019.如果弹出如下对话框,则选择第二项,然后确定。选择.NETFramework4.8的DeveloperPack.选择保存路径。勾选同意条款,然后点安装。安装过程。安装完毕后,点击重启。打开Unity,双击NewBehaviorScript文件,系统运行VS2019,得到如下结果。usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassNewBehaviourScript:MonoBehaviour{//StartiscalledbeforethefirstframeupdatevoidStart(){}//UpdateiscalledonceperframevoidUpdate(){}}环境准备工作完成。HTCVive开发入门篇单击输入您的封面副标题第2课主角及移动单击输入您的封面副标题一、主角为方便我们进行VR内容创作,在SteamVRPlugin中已经事先做好了许多内容,我们直接使用这些内容。第一步,在场景中添加主角。找到Assets/SteamVR/InteractionSystem/Core/Prefabs/文件夹中的Player对象,拖拽到Hierarchy窗口中。结果如图所示。第二步,选中场景中的MainCamera对象,按下键盘Del键将其删掉。因为Player中包含第一人称Camera,如果不删掉场景中原来的MainCamera,则运行程序的时候,玩家眼睛的位置将会出现在MainCamera的位置上,出现错误。第三步,使用菜单命令,File—Saveas,在弹出的对话框输入如下内容。第四步,初始化HTCvive头盔和手柄。点击运行按钮,第一次运行的时候,需要根据向导进行初始化配置操作。在弹出的对话框中,选择Yes。点击OpenBindingUI点击“编辑”按钮在新的界面这个可以看到当前项目中已经创建好的手柄按键绑定信息。目前有4个设置defaultplatformerbuggymixedreality镜像模式表示左右手柄按键功能一致主要按键名称Menu:菜单键Trackpad:圆盘键System:系统键Trigger:扳机键Grip:紧握键点击“保存个人按键设置”运行程序,得到如下结果二、移动在虚拟世界中,控制自己的角色移动是最基础的功能之一。SteamVRPlugin为开发者提供了传送式移动的方法。该方法包括两种传送移动方式:(1)在放置的可传送点之间移动;(2)在指定的平面上移动。1、点传送第一步,打开“学习移动”场景文件。第二步,找到Assets/SteamVR/InteractionSystem/Teleport/Prefab/文件夹中的Teleporting.prefab对象,将其拖拽到Hierarchy窗口下。第三步,找到Assets/SteamVR/InteractionSystem/Teleport/Prefab/文件夹中的TeleportPoint.prefab对象,将其拖拽到Hierarchy窗口下。将TeleportPoint对象想前方移动一段距离。按住TrackPad键,可以看到手柄发射出一条蓝色抛物线,同时可以看到周围可移动的点显示出来。将抛物线的落点放置在可移动点上,可移动点显示为绿色。松开TrackPad键,将传送到该点。第四步,使用Ctrl+C和Ctrl+V命令,复制出3个TeleportPoint对象。移动新复制出来的3个对象,在场景中分散开。结果参考下图所示。默认情况下,传送点不显示出来,只有按住TrackPad键时,才显示出来。将TeleportPoint对象在Inspector窗口中的TeleportPoint组件的MarkerActive值取消勾选,则可以在场景中一直显示传送点。勾选Lock属性,则当前传送点被锁住,无法移动到这里。通常需要完成某些任务,解锁该传送点。锁住的传送点练习:多放置几个传送点,修改它们的属性,并在场景中观察、体验。平面传送第一步,使用菜单命令GameObject—3DObject—Plane,创建一个平面。第二步,找到Assets/SteamVR/InteractionSystem/Teleport/Scripts/文件夹中的TeleportArea.cs脚本文件,将其拖拽到Plane对象成为其组件。在Scene窗口中的结果如下。在平面上移动3其它移动方式下面,我们来学习在VR环境中的其它移动方式。(1)预制路线移动第一步,将课件资源文件夹中第二课主角及移动文件夹中的ModernCity资源包导入到当前工程。第二步,打开Assets/Model/文件夹中的SceneBaked场景文件。将该文件另存为Assets/学习/第二课主角及移动/文件夹下(如果没有该文件夹则创建一下),重命名为“移动”。第三步,删掉场景中的MainCamera。将Player预制体对象拖拽到场景中。将Static对象(城市根节点)属性修改为下图所示。第四步,选中Player对象,使用菜单命令Window-Animation-Animation.在弹出的窗口点击Create按钮。在弹出的创建动画窗口,按下图进行操作。保存后,系统会弹出Animation编辑窗口,点击AddProperty。展开transform内容,点击Position后面的“+”按钮。得到如下图所示的结果。在Animation窗口中,使用鼠标滚轮,将时间缩放到6:00,然后将结束的关键帧移动到6:00位置处,如下图所示。按下“录制”按钮,进入录制状态,此时时间栏呈现出红色。将白色竖直的时间线拖拽到6:00处。切换到Scene窗口,将Player对象移动一段距离。参考值如下图。再次点击“录制”按钮,结束录制状态。运行程序,带上头盔,可以观看到我们的主角可以移动。由于动画默认是循环播放的,所以当我们的主角移动到结束位置后,又跳回到初始位置继续移动。如果只播放一次,则在Assets/学习/第二章主角及移动/文件夹中选中“移动动画”,在Inspector窗口下的LoopTime右侧的勾选框取消勾选。HTCVive开发入门篇单击输入您的封面副标题第3课拾取物体(一)单击输入您的封面副标题第一步,导入资源。将课件资源/第三课拾取物体/文件夹中的FreeBarcadeAssetPack导入到工程中。第二步,在Assets/学习/文件夹下新建文件夹,重命名为第三课拾取物体。使用菜单命令File—NewScene,创建一个新场景。删掉场景中的MainCamera。将Player预制体拖拽到Hierarchy窗口中。将当前场景文件另存为拾取物体(一)。第三步,将Assets/BarcadeGamesAssetPack/Models/FBX/文件夹中的BilliardsTable拖拽到Hierarchy窗口中。由于台球桌的模型太大,需要对其进行调整。在Hierarchy窗口中选中BilliardsTable对象,在Inspector窗口下,当前显示的内容大致如下图所示。点击Transform组件右侧“三个点”图标,在弹出的菜单选择Reset命令。操作完毕后,得到如下结果由于重置操作后,模型的大小和朝向发生变化,需要进行适当修改。先将Player对象隐藏,结果如下所示。修改台球桌的Transform参数,结果如下使用菜单命令GameObject—3DObject—Cube,创建一个立方体。将立方体放置在(0,0,0)处。选中台球桌对象,以Cube对象做参照物,使用缩放工具进行缩放,结果参照下图。删掉Cube对象。使用菜单命令GameObject—3DObject—Plane创建一个平面。将其放在(0,0,0)处。移动台球桌位置,确保运行程序的时候,台球桌在眼前,参考参数如下。将Materials属性设置如下图示所示。在Assets/BarcadeGamesAssetPack/Models/FBX/文件夹中,找到Ball对象,将其拖拽到场景中。修改ball的Transform属性,其中Scale为(5,5,5),Position参考值如下。选中Ball对象,使用菜单命令Component—Physics—Rigidbody,为其添加Rigidbody(刚体)。由于默认勾选了UseGravity属性,因此程序运行的时候,Ball将会受到重力作用,往下掉落,因此,需要为台球桌添加一个平面阻止Ball掉下去。这里,Rigidbody组件的功能只是让物体受到重力的作用,与其他物体发生碰撞的功能需要Collider类型组件完成。选中Ball对象,使用菜单命令Component—Physics—SphereCollider,添加球形碰撞体。接下来,创建一个与台球桌面大小一致平面,用来阻挡住ball下落。该平面在场景中不进行渲染。使用菜单命令GameObject—3DObject—Plane,创建一个新平面,重命名“台球桌面碰撞体”。修改台球桌面碰撞体的Transform属性。参考值如下。并取消MeshRenderer的勾选。将台球桌碰撞面拖拽到BilliardsTable下面,变成其子对象。继续选中Ball对象,在Assets/SteamVR/InteractionSystem/Core/Scripts/文件夹中找到Interactable文件(C#文件)将Interactable脚本文件拖拽到Ball对象上。修改Interactable相关属性,如下图所示。运行程序,手碰到小球,小球会显示黄色边框,同时会被推走,按任何键无法抓住小球。触碰Ball的时候,边缘显示黄色,这个的材质保存在Assets/SteamVR/Resources/文件夹中的SteamVR_HoverHighlight.mat。如果想改成其他颜色,可以修改该材质对象的OutlineColor属性。使用VS编辑器查看Interactable.cs文件,在103行加载了该材质。继续选中Ball对象,在Assets/SteamVR/InteractionSystem/Core/Scripts/文件夹中找到Throwable文件(C#文件)将Throwable.cs文件拖拽到Ball对象下,也成为其组件。运行程序,触碰小球,按下Trigger键可以拿起小球。运行程序,触碰小球,按下Grip键也可以拿起小球。我们发现,拿起小球时候手的姿势不对,为了保证姿势正确,需要继续下面的操作。在Assets/SteamVR/Input/文件夹中,找到SteamVR_Skeleton_Poser.cs文件。将SteamVR_Skeleton_Poser.cs文件拖拽到Ball对象上成为它的组件。展开SteamVR_Skeleton_Poser组件,点击⊙按钮。在弹出的对话框中选择sphereSmallPose得到如下结果。勾选ShowRightPreview右侧复选框,或者点击右手图标在Scene窗口中可以看到右手抓着Ball的姿势。勾选ShowLeftPreview右侧复选框,或者点击左手图标在Scene窗口中可以看到左手抓着Ball的姿势。运行程序,使用Trigger键和Grap键都可以将Ball抓起来。松开按键,则Ball自然下落。如果挥动手柄的同时松开按键,可以将Ball对象投掷出去。复制几个Ball对象进行练习。HTCVive开发入门篇单击输入您的封面副标题第4课拾取物体(二)单击输入您的封面副标题上一节课,我们学习了如何拾取物体。不过拾取的时候,需要一直按住Trigger键或者Grap键才可以保持拾取状态,松开后就将物体放下。这节课我们学习如何在触摸到物体的时候,只按一下Grip键就可以将其拾取,拾取期间不需要一直按住Grip键。在拾取状态下,再次按下Grip键,就可以将物体放下。打开我们的工程项目,打开课件资源/第四课拾取物体(二)/文件夹找到FreeFantasyMedievalTownPropsPack资源包。将该资源包导入到工程中。在弹出的对话框中,选择Install/Upgrade.将FreeFantasyMedievalTownPropsPack资源包导入到我们的工程文件中。如果在Console面板下发现如下信息
则将Project面板下,Assets文件夹中的Plunins文件夹删掉(使用键盘Del键)导入完毕后,在Assets/EmaceArt/SlavicWorldFree/Scene/文件夹下,找到Slavica_Profile_free场景文件。双击打开该场景。使用菜单命令File—Saveas,在弹出的窗口新建一个文件夹,名字为“第四章拾取物体(二)”,然后输入文件名“拾取物体(二)”,保存。将场景中的Camera(1)删掉。在Project面板的搜索栏输入Player,找到Player预制体。将Player对象拖拽到Hierarchy窗口中。切换到顶视图,将Player对象移动到木屋旁边的桌子附近。戴上头盔,运行程序结果如下。在课件资源/第四课拾取物体(二)/文件夹中找到StylizedFantasySwordPBR资源包。将该资源包导入到工程中。导入完毕后,在Assets/RB_Sword_Pack/Prefabs/文件夹中找到RB_Gladius对象。将该对象拖拽到Scene窗口中,调整其属性使其平放在桌面上,将其名字修改为“匕首”,参考值如下。结果如下图所示。使用菜单命令GameObject—3DObject—Plane创建一个平面,调整大小,和位置,使其与桌面平行,并取消MeshRenderer勾选。结果参考下图。选中匕首对象,使用菜单命令Component—Physics—Rigidbody,添加刚体组件。再使用菜单命令Component—Physics—BoxCollider,添加Box类型的碰撞体。在Inspector面板下,找到BoxCollider组件,点击EditCollider右侧的按钮。编辑按钮按下后,在Collider框的6个面每个面的中心都会出现一个小点,按住鼠标左键点住这个点,可以进行拖动,调整碰撞面的形状。调整Collider,包住匕首手柄处。在Inspector面板下,点击AddComponent按钮。在弹出的搜索框中,输入“inter”,在下方的推荐栏中,选择Interactable(只是一种添加脚本组件的方法)修改Interactable属性如下。按照上述方法,继续添加Throwable和SteamVR_Skeleton_Poser脚本。展开SteamVR_Skeleton_Poser,点击下图所示按钮。在弹出的对话框选择GrenadePose点击右手图标或勾选ShowRightPreview右侧复选框,如下图所示。在Scene窗口中调整手的位置和角度,使得它握住匕首柄部。调整满意后,点击SavePose按钮,保存姿势。运行程序,拾起匕首,效果如图所示。目前为止,我们需要一直按住Grip键或者Trigger键才能保持物体拿在手中,如果长时间按住按键,非常不方便。一个比较合理的方法是当手柄碰到物体的时候,按一下Grip键,将物体拿起,再按一下Grip键,将物体放下。同时不使用Trigger键拾取物体。在Project窗口中,在Assets/学习/第四章拾取物体(二)/文件夹中,使用菜单命令Assets—Create—C#,创建一个C#文件。将新创建的文件重命名为“PickUp”。双击PickUp.cs文件,使用VS2019编辑器打开。输入下面的内容。在Hierarchy窗口中选中匕首对象,在Inspector窗口中,移除掉Throwable组件。将PickUp脚本拖拽到匕首对象上成为其组件。展开PickUp,找到最下面的属性GrabAction,选择如下。结果如图。运行程序,用手触摸匕首,按一下Grap键后松开,匕首可以一直抓在手中,再按一次Grib键,匕首掉落。按照上面学习的内容,放置其他物品,多进行练习。HTCVive开发入门篇单击输入您的封面副标题第5课手枪及射击单击输入您的封面副标题使用Unity编辑器打开HTCViveLearn工程文件。在课件资源/第五课手枪及射击/文件夹中找到Factory资源包。将Factory资源导入到工程中。在Assets/TirgamesAssets/Factory/Scenes/文件夹中,找到FactoryDay场景文件。双击打开FactoryDay文件。使用菜单命令File—Saveas,将场景另存如下所示。将Player预制体,拖拽到Hierarchy面板下。将Player移动到如下位置。运行程序,确保油桶就在眼前。在课件资源/第五课手枪及射击/文件夹中,找到“手枪”资源包。将手枪资源包导入工程。在Assets/手枪/Prefabs/文件夹中找到手枪预制体。将手枪预制体拖拽到Hierarchy窗口中,修改其Transform组件中Scale内容如下图。移动手枪位置,放置在面前的油桶上。选中手枪对象,使用菜单命令Component—Physics—Rigidbody,为手枪对象添加刚体组件。继续使用菜单命令Component—Physics—BoxCollider,为手枪添加Box类型碰撞体组件。在Inspector窗口下,按下BoxCollider组件下EditCollider右侧按钮。按照下图方式编辑碰撞体,将手枪上部包围住。再次单击EditCollider右侧按钮,使其退出编辑状态。继续为手枪对象添加Interactable和SteamVR_Skeleton_Poser两个组件。Interactable组件设置如下。展开SteamVR_Skeleton_Poser组件,点击下图按钮。在弹出的窗口选择longbowPose.调整手的位置,握住手枪。点击SavePose按钮。选中手枪对象,在Inspector窗口点击AddComponent按钮,输入Audio,选择AudioSource组件。展开AudioSource组件,设置如下。在Assets/学习/第五章手枪及射击/文件夹中,新建一个C#脚本。重命名为GunPickFire。脚本内容如下将GunPickFire脚本拖拽到手枪对象上,设置内容GrabAction如下图。设置内容TriggerAction如下图。GunShoutAudio选择手枪射击音效。最终结果如下图。为手枪添加红外瞄准线在Hierarchy窗口选中手枪对象使用右键菜单命令3DObject—Cube,创建一个立方体。通过上述方法创建的立方体,直接将手枪对象作为父对象。在Inspector中修改Cube的名字为“激光发射器”,修改Transform组件内容,参考下图。在Scene中的结果参考下图。在Assets/学习/第五章手枪及射击/文件夹中,使用右键菜单命令Create—Material将新创建的Material(材质)命名为“激光线”选中激光线材质,在Inspector窗口中,点击下图所示的按钮。在弹出的窗口,选择红色RGB(255,0,0)。找到Inspector窗口下的Shader属性,当前默认是Standard。点击Standard文本框,在弹出的下拉列表中,选择LegacyShaders继续选择self-IIIumin继续选择Diffuse。最终结果在Hierarchy窗口中,选中手枪对象的子对象激光发射器,使用菜单命令Component—Effects—LineRenderer展开LineRenderer组件,将Width的值输入0.005。将Materials下面的Element0指定为激光线材质。在Assets/学习/第五章手枪及射击/文件夹中,再新建一个名为Laser的C#文件。编写代码如下:将Laser.cs拖拽到激光发射器对象身上。运行程序,发现激光线的方向不正确。在Hierarchy窗口选中激光发射器对象,修改Transform属性如下。运行结果如下图所示。选中激光发射器对象,在Inspector窗口中,将MeshRenderer组件取消勾选,在场景中不显示该对象。HTCVive开发入门篇单击输入您的封面副标题第6课手枪及射击(二)单击输入您的封面副标题主要内容:在第5课的基础上,(一)添加枪口射击粒子特效;(二)弹壳弹出及落地音效;(三)弹药填充效果及音效;(四)UI显示弹药数量。(一)添加枪口射击粒子效果打开手枪及射击场景文件,使用菜单命令File—Saveas,另存为Assets/学习/第六章手枪及射击(二)/文件夹中。在Hierarchy窗口中,选中激光发射器对象,将Assets/手枪/Effects/文件夹中的射击闪光对象拖拽到激光发射器对象下,成为其子对象。在Inspector窗口下,修改Transform属性如下。在Assets/学习/第六章手枪及射击(二)/文件夹中,新建一个名为GunPickFire2的C#文件。在Hierarchy窗口中,选中手枪对象,在Inspector窗口中,将GunPickFire脚本组件删除,换成GunPickFire2脚本组件。使用VS2019打开GunPickFire2.cs文件,编辑内容如下:GrabAction设置如下。TriggerAction设置如下点击Ps右边数据槽右边按钮。选择射击闪光。GunShoutAudio指定手枪射击音效,最终结果如下。运行程序,射击结果如图所示。(二)弹壳弹出及落地声音(1)弹壳弹出点在Hierarchy窗口中,展开“手枪”对象,为其添加Cube类型的子对象,重命名为“弹壳弹出点”。在Inspector窗口设置“弹壳弹出点”的Transform参考如下。将“弹壳弹出点”组件中的MeshRenderer取消勾选。结果如下图所示。(2)弹壳对象在Assets/手枪/Prefabs/文件夹中,找到弹壳预制体。将弹壳预制体拖拽到Hierarchy窗口下,调整其Transform参数。为“弹壳”对象添加Rigidbody组件。修改Rigidbody参数如下。继续为弹壳对象添加AudioSource组件。将AudioClip选择为Asset/手枪/Audio/文件夹中的子弹落地.mp3音频文件。其他设置参考下图。剩余参数设置如下图。在Assets/学习/第六章手枪及射击(二)/文件夹中,新建一个名为Shell的C#文件。使用VS2019打开Shell文件,编写代码如下。(Shell.cs代码续)在Hierarchy窗口选中弹壳对象,在Inspector窗口为其添加Shell组件。将IsActiveAudio参数取消勾选。打开GunPickFire2.cs文件,增加新内容如下。得到运行程序,拾起手枪,射击,可以看到子弹壳弹出效果,听到弹壳落地声音。(三)弹药填充效果及音效更新GunPickFire2.cs代码更新Start()函数。添加OnFire()和Reload()函数调用,函数内容见后面。Reload()函数内容OnFire()函数内容OnFire()函数内容续:在Hierarchy窗口中选中手枪对象,展开GunPickFire2组件,内容设置如下。GunShotAudio下的Size设置为3,并将Element分别指定为Assets/手枪/Audio/文件夹中的手枪射击音效、没子弹音效、装填子弹。将Hierarchy窗口中的弹壳对象拖拽到ShellPrefab上。将弹壳弹出点对象拖拽到ShellPosition上。运行游戏,拾取手枪,射击,射击5次之后,播放没子弹音效。按下手柄圆盘键,播放装填子弹音效,可以继续射击。(四)UI显示弹药数量使用菜单命令GameObject—UI—Panel创建一个Panel对象。将Panel重命名为图标显示区。在Hierarchy窗口中选中Canvas对象,在Inspector窗口中,将Canvas组件中的RenderMode改为WorldSpace。在Hierarchy窗口中,拖拽Canvas对象到Player\SteamVRObjects\VRCamera对象下,成为VRCamera的子对象。选中Canvas对象,在Inspector窗口下修改RectangleTransform参数如下。选中图标显示区对象,在Inspector窗口下Image组件的Color透明度设置为0(即完全透明),其他设置如下图。图标显示区的RectangleTransform参考如下。选中图标显示区对象,使用鼠标右键菜单命令UI—Image,创建一个Image对象(该对象是图标显示区对象的子对象),重命名为子弹0。选中子弹0对象,在Inspector窗口修改Image组件中SourceImage内容,指定为手枪/Icons/子弹图标。修改RectTransform组件参数内容。在Scene中可以看到如下内容:选中子弹0对象,使用Ctrl+C命令复制该对象,在使用Ctrl+V命令粘贴4个子弹0对象,并将他们分别改名为子弹1、子弹2、子弹3、子弹4。在Scene窗口中,移动子弹1—子弹4图标(如果被油桶对象遮挡,就将油桶移动到旁边),结果参考下图。根据自己电脑的实际情况调整位置和大小。打开GunPickFire2.cs脚本文件。在Start()函数上面添加代码如下。在Hierarchy窗口选中手枪对象,展开GunPickFire2组件,将BulletIcons下面的Size输入5,然后为Element0~Element4指定子弹0~子弹4。回到GunPickFire2.cs文件,在Reload()函数后面添加如下内容。然后更新Reload()函数的内容。回到OnFire()函数,在--remainBullets;下面填红框中的内容。运行测试游戏。HTCVive开发入门篇单击输入您的封面副标题第7课手枪及射击(三)单击输入您的封面副标题主要内容:在第6课的基础上,(一)修正填充子弹的逻辑bug;(二)添加弹痕效果;(三)添加丧尸及动画;(四)丧尸被击中及死亡判断。(一)修正填充子弹的逻辑bug在第6课中,填充子弹的音效没有播放完就射击,会打断填充子弹音效,更合逻辑的做法时在填充子弹音效播放完毕之前,无法进行射击。在Unity中打开手枪及射击(二)场景,另存为Assets/学习/第七章手枪及射击(三)/手枪及射击(三)。在Assets/学习/第七章手枪及射击(三)/文件夹中新建一个名为GunPickFire3的C#脚本。将GunPickFire2.cs中的代码复制粘贴到GunPickFire3.cs中。将类名改为GunPickFire3,保存代码。在Hierarchy窗口中选中手枪对象,在Inspector窗口中,为其添加GunPickFire3.cs组件。参考GunPickFire2内容设置相关参数。将GunPickFire2组件移除,运行游戏。用VS2019打开GunPickFire3文件,在最顶部增加如下代码。在Start()函数上方增加如下代码。在35行左右,改写调用OnFire()的代码。在代码尾部的ShowBulletIcons()函数后面添加下面代码。找到Reload()函数,更新其内容如下:保存GunPickFire3.cs文件,运行程序进行测试。(二)添加弹痕效果在Assets/手枪/Prefabs/文件夹中,找到弹孔预制体,将其拖拽到Hierarchy窗口中。用VS2019打开Laser.cs代码中,在Start()上方添加如下代码。在Hierarchy窗口中,选中手枪对象的子对象激光发射器对象,将Laser组件中的HolePrefab指定为弹孔对象。更新Update()函数中if(Physics.Raycast(ray,outhitObj))中的内容如下:回到GunPickFire3.cs文件中,找到OnFire()函数,在该函数末尾添加一行代码如下:运行程序,结果参考下图。(三)添加丧尸及动画在课件资源/第七课手枪与射击(三)/文件夹中,找到Zombie资源包,将其导入到工程中。导入结果如下:在Assets/Zombie/Prefabs/文件夹中找到Zombie1预制体对象。将Zombie1预制体拖拽到Scene窗口中,并将其Y轴旋转180,面对着我们的Player对象。运行程序,可以看到Zombie1对象自动播放一系列动画。接下来我们创建新的AnimatorController。在Assets/学习/第七章手枪及射击(三)/文件夹中,使用鼠标右键弹出菜单,使用Create—AnimatorController创建一个状态机。将该Controller对象重命名为丧尸。在Hierarchy窗口选中Zombie1对象,在Inspector窗口修改其名字为丧尸。将Animator组件下的Controller指定为丧尸。取消ApplyRootMotion勾选。点击Untagged右侧的下三角箭头。选择AddTag...。点击“+”,在NewTagName栏目中输入Zombie,然后点Save。将丧尸的Tag指定为Zombie。双击Assets/学习/第七章手枪及射击(三)/文件夹中的丧尸文件,弹出Animator窗口。在BaseLayer窗口中,使用鼠标右键,弹出菜单,选择CreateState—Empty。得到结果如下。选中NewState状态机,在Inspector窗口修改其名字为站立。点击下图红框标记的按钮。在弹出的对话窗口选择第一个Z_Idle。运行程序,观看丧尸的站立动画。继续创建一个状态机,将名字修改为奔跑。将Motion指定为Z_Run。在Parameters选项卡下,点击“+”按钮,在弹出的菜单中选择Bool。将新创建的NewBool变量重命名为isAttacked。在BaseLayer窗口中,鼠标右键点击站立状态机,在弹出的菜单中选择MakeTransition。从站立状态机会拉出一个白色箭头,将鼠标移动到奔跑状态机上,点击鼠标左键,创建站立到奔跑的状态过渡连接。鼠标左键点击该白色箭头,在Inspector窗口中,找到Conditions,点击ListisEmpty右侧的“+”按钮。使用默认的参数。再将HasExitTime右侧的方框取消勾选。再创建一个状态机,将名字修改为死亡。将Motion指定为Z_FallingBack。在Parameters窗口在创建一个Trigger类型的参数,重命名为isDead。从AnyState
到死亡状态机创建一个状态过渡。选中该状态过渡箭头线,在Inspector窗口下的Conditions添加条件。选择isDead。在Hierarchy窗口选中丧尸对象,在Inspector窗口为其添加BoxCollider组件。在BoxCollider组件下,按下下图红框标记的按钮。在Scene窗口调整BoxCollider的大小,结果如下图。在Assets/学习/第七章手枪及射击(三)/文件夹中,创建一个新的C#文件,重命名为Zombie。使用VS2019打开Zombie.cs文件,编写如下代码。打开Laser.cs文件,找到Update()函数中
if(isHole)位置,更新内容如下。将Zombie.cs拖拽到丧尸对象上,成为其组件。运行程序,拾取手枪,对着丧尸射击。HTCVive开发入门篇单击输入您的封面副标题第8课UI交互单击输入您的封面副标题主要内容:(一)场景搭建;(二)创建可显示/隐藏的UI;(三)UI中添加小汽车;(四)可从UI中取出小汽车;(五)将小汽车扔到地上变成大汽车。(一)场景搭建将课件资源\第八课UI交互\文件夹中的LakeRaceTrack资源包导入工程。导入完毕后,在Assets/race-track-lake/文件夹下找到race_track_lake场景文件,双击打开该场景。Scene中的内容如下。在Unity编辑器中,使用菜单命令File—Saveas,将场景保存在Assets/学习/第八章UI交互/文件夹中,场景名为UI交互。在Assets/SteamVR/nteractionSystem/Core/Prefabs/文件夹中找到Player预制体,拖拽到场景中。将场景中原有的Camera删掉。将Player移动到合适的位置,运行程序观看效果。(二)创建可显示/隐藏的UI将课件资源/第八课UI交互/文件中的卷轴.png图标拖拽
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环境治理技术与生态修复手册
- 携手青春勇攀智慧高峰:小学主题班会课件模式
- 快乐时光:享受学习的乐趣小学主题班会课件
- 四川省凉山州2026年中考语文试卷
- 关于新生产线试运行汇报5篇范文
- 多功能办公家具配置方案
- 心灵沟通:倾听彼此的心声小学主题班会课件
- 小学主题班会课件:勤奋学习永攀知识高峰
- 数据中心运营管理最佳实践指南
- 预防校园欺凌,共建友善校园几年级主题班会课件
- (高清版)JTG 3810-2017 公路工程建设项目造价文件管理导则
- 人教版四年级数学下册期末试卷-
- 《民宿文化与运营》课件-第四章 民宿建设
- JC-T 2536-2019水泥-水玻璃灌浆材料
- TGDNAS 037-2023 结膜囊冲洗技术规范
- 人教版七年级历史下册教案全集
- 矿井瓦斯灾害防治
- 北京中医药大学《701中药综合1》(含中药学、分析化学、中药化学)历年考研真题汇编
- 会计师事务所司法会计鉴定工作底稿模版
- 腹腔镜右半结肠切除术
- 2023年街道办人员招聘笔试考试题及答案
评论
0/150
提交评论