塔防游戏——防御方设计

我们已经能够通过生成器产生敌人,这些敌人能自动寻路到达主城所在位置进行攻击。主城被攻破后游戏结束。攻击方已经具备。

接下来是防御方了。这里,咱们建立防御塔阻止敌人的进攻。首先说说本例中三种防御塔的攻击方式:

弓箭手:远程攻击,对敌人射出弓箭造成伤害,弓箭可以插在敌人身上;

锤兵:群体攻击,锤击地面,原地击飞敌人,减慢敌人移动速度;

剑士:近程攻击。

那么从弓箭手开始,来做他的攻击功能:

弓箭手攻击时会从“枪口”处发出弓箭,所以先在弓箭手模型上创建一个枪口Muzzle:

枪口一Z轴指向发射方向

枪口要随弓箭移动,在Hierarchy面板中大概在这里:

为了获取这个未知层级的子物体,也为了让其它类也方便调用,我们先写一个工具类,里面创建一个查找未知层级子物体的方法:

弓箭手的脚本中还需要拿到箭矢的预制体,先把箭矢预制体放入路径中:

为箭矢预制体创建一个脚本Bullet挂上去:

为了让箭矢和其它物体可以使用对象池,我们先创建一个空物体,作为所有对象池的管理器。取名“PoolManager”,创建对象池类:

其它物体需要对象池也可以调用该类的方法。

弓箭手需要有一个攻击范围。敌人进入该范围后才会被认定为目标并展开攻击。

首先将敌人都放在Enemy层,创建弓箭手的脚本:

弓箭手的初始化在弓箭手创建时调用。

如果弓箭手已经能检测敌人并发射箭矢,接下来就是箭矢的功能了。主要如下:

1. 飞向目标(始终面向目标,并向前飞);

2. 打到目标,调用目标受伤方法(用距离判断是否打到);

3. 插在目标身上(认目标做父物体,停止移动)

要让箭矢能插在敌人身上,需要在敌人模型上创建一个空物体做打击点,取名HitPos,为了效果逼真,HitPos最好放在模型骨骼上,并可以在敌人脚本中声明一个hitPos,使用查找未知层级子物体的方法来获取:

当弓箭手检测到敌人创建箭矢时,同时将敌人信息、伤害值、箭矢对象池赋给箭矢,由箭矢去做接下来的工作,如伤害敌人,它的脚本可以这样写:

箭矢的移动速度在编辑器界面自行设定,在弓箭手的攻击方法中,就可以在创建箭矢的同时把相关信息赋给它:

弓箭手做完,接下来是锤子兵的功能:

想象每一下都是LOL里石头人的大招

锤子兵的功能和弓箭手非常相似。除了攻击方式不同,其它都一样。所以我们创建锤子兵的脚本可以继承自弓箭手的脚本:

除了对敌人造成伤害之外,需要专门写一个击飞的方法,击飞方法可以写在锤子兵的脚本里,也可以在敌人脚本(Enemy)中写一个被击飞方法:

该方法是公开属性,在锤子兵那边调用。

然后是剑士的功能:

剑士功能最简单,但增加了一个暴击的属性,将暴击率代入攻击力的计算就好,脚本也继承自弓箭手:

是不是很简单?

好了,三个人形防御塔的功能都做完了。现在正式做安放防御塔的功能,用Image搭建一个防御塔菜单UI界面,放入精灵图片,取名“PagodaMenu”:

在PagodaMenu下创建三个Image做头像:

我是直接把模型放在红色背景板前截图

在道路旁摆上若干的防御塔地形,将层设为Pagoda:

我们先来看下放置的过程:

通过演示,我们大概可以理清创建的逻辑:

1. 点击头像实例化一个防御塔,并显示攻击范围;

2. 按住鼠标不放防御塔会跟随鼠标移动;

3. 攻击范围的颜色在可放置位置显示为绿色,其余地方为红色;

4. 在可放置位置弹起鼠标时,会将防御塔放在地形上,且同时为防御塔初始化。

根据以上的逻辑顺序,我们首先要让图片具有可点击事件与弹起事件。为头像Image创建一个脚本,引入相应接口:

然后可以从主摄像打出射线,将射线检测点的坐标赋给防御塔,可以放在在Update中调用。攻击范围的显示可以通过创建一个普通球形物体来实现,后面在代码中调整颜色就行了。位置也跟随射线检测点移动,平时处于禁用状态,只有在摆放防御塔过程中调用:

现在将所有防御塔预制体放入路径中:

预制体名字和头像图片的名字相同,且一一对应:

为Icon的脚本创建初始化方法:

弹起事件中根据条件判断当前是否可放置防御塔,判断逻辑放在Update中:

好的,头像功能的脚本就做完了。头像的数量可以根据防御塔具体数量增减。我们注意到每个头像的初始化方法没地方调用,可以创建一个管理类来对它们统一初始化,将它挂在PagodaMenu上:

主摄像机和范围显示器在编辑器界面直接拖入。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • 初秋红雨昨夜飘 今晨蓝穹生脂凝 故人各居天一崖 迄今三年未添衣
    竹林晓圣阅读 164评论 0 1
  • 学习经典诵读笔记 今天我们一行四人,到信阳春华小学“寻宝”――学习经典诵读如何操控。 十点半,到达目的地,春华学校...
    清泉_8ed6阅读 179评论 0 4
  • 不要觉得长,我就是要看你们有没有耐心读完一篇文章,这是我对一个读书人最起码的要求。##### 现在回头看,2017...
    风吹燕尾阅读 4,383评论 0 1
  • 宇宙的一角,有一座小岛,在这个小岛上有许多的灵气、灵气不会使有许多生物饿,这里有许多动物、植物、虫、蚁、蛇、魔、灵...
    魔帝黑麟阅读 330评论 0 0
  • 疥疮在现在生活中是一种很强具有传染性的皮肤病,患上疥疮以后做好防止传染给家人以及朋友,避免二次传染,都有哪些方式是...
    ccf6eebcab16阅读 786评论 0 0