Unity中可以扩展的相机属性●清除标记:决定场景的哪个部分需要清除。你可以创建多个相机并赋予它们不同的深度。如果当前相机没有设置天空盒,它将缺省使用在渲染设置中的天空盒。武器相机的Clear Flags应该被设置为仅深度。为了使UI显示在所有其他相机视的顶部,你还需要设置Clear Flags和Depth only并确定相机的深度比其他相机的高。图7-53景深相机正交相机。......
2023-10-17
1)完善射击效果
新建一个空物体,作为被攻击到的效果点,添加ParticleSystem组件,参数如图8-234和图8-235所示。
图8-234 新建空物体
图8-235 添加空物体的组件及参数设置
从Prefabs文件夹中选择一只怪物,拉到场景中,将刚刚做好的空物体拖到怪物身上,调整位置好位置,完成后单击Apply按钮(见图8-236)。
其他的怪物做法相同,打开EnemyHealth,代码与之前的PlayerHealth相似(见图8-237和图8-238)。
在先前的PlayerShoot中我们改变一句代码(见图8-239)。
其中SetTrigger类似之前的SetBool,我们在Animator面板中添加变量,因为任何状态都有可能转换到死亡状态,所以我们如下设置(见图8-240):
设置好Trigger,以及Death状态的动画,做法和先前的都一样(见图8-241)。
给每个怪物的Prefab加上EnemyHealth和刚体+碰撞体(见图8-242)。
做好之后运行,可以在生成的怪物看,打中怪物会有特效,怪物也可以被正常扣血了(见图8-243)。
图8-236 设置完成后Apply的效果
图8-237 EnemyHealth脚本(1)
图8-238 EnemyHealth脚本(2)
图8-239 PlayerShoot代码修改
图8-240 SetTrigger设置
图8-241 Trigger设置完成
图8-242 给怪物的Prefab添加EnemyHealth及刚体+碰撞体
图8-243 怪物被扣血
2)动画事件
假如你在试验的时候发现报了类似这个错误(见图8-244)。(www.chuimin.cn)
图8-244 错误报告
这里就要提到“动画事件”这个概念了,选中怪物的fbx,找到这个界面(见图8-245)。
图8-245 选中怪物的fbx
因为这是Unity的官方教程样本,里面的资源已经制作好,所以有动画事件,选择Death动画,再选下面的event(见图8-246)。
图8-246 选择Death及其下的event
可以看到这里有StartSinking这个事件,因为我们还没有写任何代码响应这个事件,所以报错。那么我们补全这个事件。
打开EnemyHealth,添加代码。
先添加几个变量(见图8-247)。
添加方法StartSinking(注意名字不要写错),如图8-248所示。
图8-247 添加变量
图8-248 StartSinking方法的添加
这时候单击运行可以看见怪物死亡,并且下沉了(见图8-249)。
发现了一个小bug,有的时候怪物死亡还会滑动一段时间,这是在还没有被destroy时候,寻路组件还会起作用,加上一点代码,修补一下这个bug,并且怪物死亡突然消失看起来也很奇怪,加上一个下沉的时间显得自然一些(代码见图8-250)。
Tips:创建边界。有的时候一不小心就跑出了地图,这个明显是不行的,我们加入边界。创建一个cube,并放到地图边界处,去除掉多余的component(见图8-251)。
四边都用这个方法做好(见图8-252)。
运行,可以看到主角不会再掉下去啦。
图8-249 怪物死亡并下沉
图8-250 添加下沉时间脚本
图8-251 去除多余的component
图8-252 主角不会掉
有关虚拟现实理论基础与应用开发实践的文章
Unity中可以扩展的相机属性●清除标记:决定场景的哪个部分需要清除。你可以创建多个相机并赋予它们不同的深度。如果当前相机没有设置天空盒,它将缺省使用在渲染设置中的天空盒。武器相机的Clear Flags应该被设置为仅深度。为了使UI显示在所有其他相机视的顶部,你还需要设置Clear Flags和Depth only并确定相机的深度比其他相机的高。图7-53景深相机正交相机。......
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
在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
实例化预设使用上面章节中描述的创建预设的方法。一旦你创建了预设,你就可以简单快速地得到一个预设的拷贝,称为实例。为了创建任何预设的一个实例,从工程视图中拖动一个预设到层次或场景视图中。添加组件和脚本当你选中任何预设或物体时,你可以通过使用组件来向其中添加一些额外的功能。脚本也是组件的一种类型。缺省情况下脚本也包含在组件菜单中。你可以通过Components→Camera-Control来找到它。......
2023-10-17
图8-120公有变量初始化这里要注意的是,Tank Mask的选取必须是Players,否则后面子弹的爆炸将不会作用于坦克。图8-121FireTransform的transform设置2)发射子弹接下来就要实现子弹的发射功能,并且子弹可以蓄能,蓄能越久射击距离也就越长,因此也就需要有一个蓄能状态的指示。首先,选中Hierarchy层级下的Tank,为它新建一个子对象Create Empty,命名为FireTransform。该对象主要是规定子弹的射出位置。测试完毕之后,把Hierarchy层的Tank删除掉,保存当前场景。......
2023-10-17
图9-71创建游戏管理器的逻辑脚本游戏胜负逻辑是与GameManager等脚本关联起来的。图9-76添加Look At Target组件运行游戏,发现收集物状态UI已经可以正常显示,面向摄像机了。图9-78添加Wall Mover组件图9-79组件关联在Scripts文件夹内右键Create→C# Script,重命名GoalZone,用于处理到达终点的逻辑。找到VR Win Panel→Exit Game Button上的Button组件,设置On Click事件调用为Game Manager UI→GameManager.ExitGame方法。图9-84设置完成的效果显示成功拾取到4个盾牌收集物到达GoalZone,也会弹出VR Win Panel的UI,可以进行一样的操作。......
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
尝试添加一个刚体到刚创建的物体上。选择该物体并从菜单中选择Component→physics→Rigidbody。它们使用一个粒子发射器,粒子动画和粒子渲染器来创建一组移动的粒子。音频剪辑是一个引用属性。移除组件如果你想移除一个组件,在检视面板的头部使用option-或右击然后选择移除组件。例如,如果你想访问变换组件的变换功能,你只需要使用transform.Translate()或gameObject.transform.Translate()。使用GetComponent()有许多组件不能成为一个游戏物体类的成员。通过调用GetComponent并存储一个引用到结果中。......
2023-10-17
相关推荐