美文网首页
Unity 官方教程 Tanks (三)

Unity 官方教程 Tanks (三)

作者: 迷途小路 | 来源:发表于2019-01-24 15:29 被阅读0次

    炮弹伤害

    上一章中我们已经可以正确的发射炮弹,但是炮弹打出去没有任何的效果,这一章我们来完善炮弹的伤害事件。

    我们打开ShellExplosion.cs,把它拖入到预制物Shell下,打开它 

    首先在炮弹发射2s后,无论怎么样都将其销毁。然后有个OnTreggerEnter方法,即炮弹和其他物体碰撞后调用的方法。记得完善代码组件

    现在我们来完善OnTreggerEnter方法,首先,我们添加炮弹碰到物体后的爆炸效果。如下:

    现在炮弹打到任何物体都有爆炸效果了,但是打到对方坦克时坦克任然纹丝不动,这不过瘾,我们要让炮弹爆炸点离坦克越近,坦克被推动地越远。我们设一个爆炸半径 m_MaxLifeTime ,半径内的坦克都受到影响,爆炸冲击力m_ExplosionForce。

    然后获取爆炸半径内的layer是player的所有collider,遍历它们,给它们的rigidbody添加一个力,力的中心点就是爆炸的中心点。

    然后设置代码组件:

    试一下吧,爆炸可以正确地震动坦克了,如果自己离爆炸很近,自己也会被推开。

    再来完善伤害,即越近收到的伤害越高。新建一个方法CalculateDamage来计算爆炸点和坦克的距离,根据距离来算出伤害,在这里这个伤害是线性变化的。最近点为max,超过爆炸半径为0。

    最后我们在OnTriggerEnter方法中使用CalculateDamage方法,给TankHealth造成伤害。

    再试一下,嗯,可以的。

    添加生成点和默认界面

    我们现在在游戏中动态地生成2个坦克,而不是一开始就存在,像servival shooter一样,我们在需要2个坦克生成点。先删去场景里的Tank,在Hierarchy 下新建2个空物体分别命名为SpawnPoint1和SpawnPoint2,并进行设置

    接下来是一个游戏默认界面,在Hierarchy下新建一个Canvas,叫MessageCanvas,里面添加一个Text,设置如下:

    注意里面有一个Shadow,用于阴影显示,完成后界面应该是这个样子

    接下来我们将CameraRig下的camera control 里的tank内容去掉,只用将Targets置为0再回车即可

    camera control.cs脚本里的的m_Targets变量前面的HideInInspector可以加上了,这样在组件中就不会显示它了。

    TankManager

    现在我们梳理一下游戏结构,这个游戏的目标是2个人分别控制一个坦克,血量清零时进行下一局,五局三胜,当然这些条件可以设置。那么我们需要一个GameManager充当管理全局的角色,然后用一个TankManager进行坦克的管理,它负责坦克的颜色、射击和移动,这样就实现解耦,利于游戏的拓展。

    我们打开TankManager.cs,查看里面的内容:

    在Setup()方法中先获取movment 和shooting脚本,添加编号,改变颜色,用于后面的方法。

    然后我们需要在里面加上启用、禁用和重置坦克的方法:

    因为这部分比较好理解,所以官方一开始就给好了,下一章我们一起看GameManager.cs如何进行游戏的管理。

    相关文章

      网友评论

          本文标题:Unity 官方教程 Tanks (三)

          本文链接:https://www.haomeiwen.com/subject/yyvlcqtx.html