移动VR一般受到一些设备的限制,操作方式比较有限。现在需要添加移动VR专属的角色控制脚本。运行游戏,检测移动VR的编辑器模拟模式。角色可以顺利跟随导航标识移动到目标位置。图9-121确定Mouse Control是否勾选图9-122检测移动VR的编辑器模拟模式在VRUIPanel中有这么一段代码:主要就是为了Cardboard而实现的Cardboard输入操作就是通过这个Input.GetTouch来实现的。......
2023-10-17
像之前主角的动画一样,给怪物添加Animator Controller(见图8-189)。tips:这个游戏里面的zoomBear和zoomBunny使用的是同一套动画。
可以看到zoomBear没有动画文件,因为和zoomBunny共用,所以需要做两个动画控制器:一个是zoomBunny;另一个是Hellephant(见图8-190)。
怪物一出生就自动寻找主角,当主角死亡的时候则进入idle状态。
将controller挂到预制体上(见图8-191)。
图8-189 给怪物添加Animator Controller
图8-190 动画控制器创建
图8-191 将controller挂到预制体
其余怪物也同样做法,然后运行,可以看到怪物移动的时候会播放动画了(见图8-192)。剩下的状态后期继续做,接下来处理怪物攻击。
图8-192 怪物移动时播放动画
怪物攻击
新建两个脚本EnemyAttack处理怪物攻击,PlayerHealth处理角色的生命值。PlayerHealth如图8-193所示。
图8-193 PlayerHealth脚本
EnemyAttack如图8-194所示。
(www.chuimin.cn)
图8-194 EnemyAttack脚本
每一帧的Update都在判断:如果角色处于攻击范围且时间足够攻击,则调用攻击函数。
这两个函数都是Unity自带的判断碰撞体的函数,函数名不可写错。
给三种怪物的预制体都加入碰撞体,为了编辑方便,可先将预制体拖到地图上,添加SphereCollider(当然也可以用别的Collider,根据怪物体型决定),如图8-195所示。
图8-195 怪物预制体加入碰撞体
确定isTrigger的选项勾上(非常重要),并将脚本挂在怪物身上(见图8-196)。
调整好后单击右上角的Apply,再删掉地图上的怪物就好,其余的怪物做法相同(见图8-197)。
单击运行,打开Console面板,可以看到已经正确触发碰撞体了(见图8-198)。
图8-196 选择isTrigger
图8-197 单击Apply
图8-198 触发碰撞体
有关虚拟现实理论基础与应用开发实践的文章
移动VR一般受到一些设备的限制,操作方式比较有限。现在需要添加移动VR专属的角色控制脚本。运行游戏,检测移动VR的编辑器模拟模式。角色可以顺利跟随导航标识移动到目标位置。图9-121确定Mouse Control是否勾选图9-122检测移动VR的编辑器模拟模式在VRUIPanel中有这么一段代码:主要就是为了Cardboard而实现的Cardboard输入操作就是通过这个Input.GetTouch来实现的。......
2023-10-17
Unity中可以扩展的相机属性●清除标记:决定场景的哪个部分需要清除。你可以创建多个相机并赋予它们不同的深度。如果当前相机没有设置天空盒,它将缺省使用在渲染设置中的天空盒。武器相机的Clear Flags应该被设置为仅深度。为了使UI显示在所有其他相机视的顶部,你还需要设置Clear Flags和Depth only并确定相机的深度比其他相机的高。图7-53景深相机正交相机。......
2023-10-17
Unity引擎的更新迭代速度很快,从2017年开始每个季度都会有次大版本的更新,比如2017.1,2017.2等,至今正式的大版本升级到了2018.2版本。Unity LTS版本将从TECH版本每年最后一个版本开始,持续支持二年的时间。如果读者实际准备发布上线的项目,为了稳定起见,建议使用LTS版本,即2017.4最新的版本,以保证项目最大限度地稳定运行。如果发现没有红色报错信息,基本可以确定大部分版本升级是成功的。......
2023-10-17
图8-32Ball脚本创建1)概要前面创建了一个游戏项目,并且创建了玩家角色和小球这些游戏对象,还通过添加游戏脚本实现了小方块的弹跳。图8-33游戏开始状态图8-34Ball项文本变为蓝色图8-35多出一个小球对象将Player和Floor游戏对象也做成预设。图8-37创建文件夹并修改其名称图8-38移动Player预设和Floor预设至Prefabs文件夹将预设Ball Prefab拖拽到Prefabs文件夹下。图8-39保存文件夹回到Assets图8-40游戏对象命名5)发射小球在窗口顶部菜单中依次单击GameObject→Create Empty。......
2023-10-17
2)创建新项目启动Unity后将出现一个并列显示Projects和Getting started的窗口。图8-6查看GameScene项图8-7调整摄像角度6)创建方块和小球创建完地面后,接下来将创建代表玩家角色的小方块和球体游戏对象。将方块移动到左侧,小球移动到右侧。图8-8选中小方块图8-9X值修改7)运行游戏再次保存项目文件)。图8-10Maximize on Play图标状态启动游戏后,将自动切换到游戏视图。图8-15游戏视图11)让玩家角色跳起来由于该脚本用于操作玩家角色,所以命名为Player。......
2023-10-17
在Assets→Audio文件夹下,右击Create→AudioMixer。只要在主角受伤时播放音效就可以了,开枪的声音同理。刚刚制作的AudioMixer还没有用到,现在我们开始制作,双击AudioMixer,添加一个SoundEffect。在AudioMixer添加一个Music用来控制背景音乐,SoundEffect用来控制音效,Master用来同时控制二者。图8-261enemies放到怪物的AudioSource的output图8-262添加组件图8-263新建脚本MixLevel图8-264把代码放至Canvas回到MasterMixer,单击volumn,选择exposed。图8-267添加music、sound脚本代码回到UI界面里面的slider条,按照不同的slider条功能添加不同的函数。......
2023-10-17
图8-120公有变量初始化这里要注意的是,Tank Mask的选取必须是Players,否则后面子弹的爆炸将不会作用于坦克。图8-121FireTransform的transform设置2)发射子弹接下来就要实现子弹的发射功能,并且子弹可以蓄能,蓄能越久射击距离也就越长,因此也就需要有一个蓄能状态的指示。首先,选中Hierarchy层级下的Tank,为它新建一个子对象Create Empty,命名为FireTransform。该对象主要是规定子弹的射出位置。测试完毕之后,把Hierarchy层的Tank删除掉,保存当前场景。......
2023-10-17
本小节将介绍的是Unity数据库与存储的相关内容。XML的设计宗旨是传输数据,而非显示数据。7)Xml数据生成步骤在Unity引擎中如何生成本地XML数据?8)Xml数据生成示例9)Xml序列化序列化是将对象状态转换为可保持或传输的格式的过程。12)什么是SQLite①SQLite是一款轻型的数据库。语法:SELECT列名称FROM表名称13)Unity当中使用SQLite导入mono.data.sqlite.dll到Assets文件夹代码添加库:using Mono.Data.Sqlite;使用SQLiteConnection对象,进行数据库连接,此操作可以创建空的数据库。关闭数据库连接,释放资源。…......
2023-10-17
相关推荐