-
添加拖拽植物的按钮
添加一个精灵,命名为SunFlower_Bar(前面的基本NGUI操作都做过了,这里就不详细写了)
-
将如图两个选中,添加进去进新图集,名为Card
-
选中SunFlower_Bar,更换精灵,调整位置和尺寸
-
克隆另一个,改名为PeaShooter_Bar,调整下位置,更换精灵图片
-
效果
-
添加拖拽植物
-
添加太阳花和豌豆射手的图集
-
选中单头向日葵中的所有图片
-
打开图集编辑器
-
点击New
-
点击Create
-
保存名为SunFlower的图集
同理,得到PeaShooter的图集
-
效果
-
-
创建拖拽植物的预设体
创建一个精灵,命名为SunFlower
-
更改精灵图片,调整尺寸
-
添加Sprite Animation脚本,更改属性
-
添加LW_DragDropItem脚本,拖给SunFlower
-
双击打开脚本,并编辑
-
勾选Clone On Drag
选中SunFlower,克隆一个,改名为PeaShooter
-
更换成豌豆射手的精灵图片
-
将SunFlower和PeaShooter拖到Resources文件夹下的Prefab文件夹下
-
对应着脚本,做一些操作
-
给所有的格子添加碰撞盒
-
选中UI Root,添加空物体,命名为Cell
-
给Cell添加碰撞盒,勾选Is Trigger,并调整大小
-
效果
-
选中UI Root添加一个Grid,命名为Row1
-
重置位置
-
将Cell放到Row1中
选中Cell,再克隆八个
-
选中Row1,点击Execute
-
效果
按W,切换到移动模式,移动到最上边一行格子
-
选中Row1,修改参数
-
效果
克隆4次,改名为Row2,Row3,Row4,Row5,依次放下调整位置
-
效果
-
创建一个空物体,命名为RowAll,重置位置
-
将所有的Row都放到这个RowAll中
-
给所有格子添加标签
-
随意点击一个游戏对象,点击属性面板的Tag,点击Add Tag
-
点击加号,命名Cell,点击Save
-
输入Cell
-
Ctrl+A全选
-
更改Tag为Cell
-
-
点击叉号
-
-
添加碰撞盒,修改碰撞和尺寸和精灵尺寸一样大
克隆SunFlower,改名为PeaShooter,跟SunFlower同理
-
效果
-
拖到Prefab文件夹中,做成预设体
-
让SunFlower的位置和PeaShooter的位置重合,SunFlower同理
-
将SunFlower和PeaShooter设为透明,A值不能为0,否则视为没有此游戏对象
-
效果,不显示前面的SunFlower和PeaShooter
-
让植物,起初不播放动画,释放植物的时候播放动画
-
起初将UI Sprite Animation脚本禁用掉,不播放动画
-
在LW_DragDropItem中添加代码,当释放植物的时候,播放动画
-
-
-
让豌豆射手发射子弹
-
让SunFlower和PeaShooter分别放到SunFlower_Bar和PeaShooter_Bar中
-
选中PeaShooter,创建一个Sprite,命名为Pea
-
将pea图片添加到Card图集中
-
选中Pea,更换精灵图片,点击Snap,恢复原始大小
先将PeaShooter拖出来,透明度改为255,因为Pea是PeaShooter的子物体,所以如果PeaShooter透明,Pea也会透明,所以为了方便观察,先显示出来
-
调整Pea相对于PeaShooter的位置
-
在Scripts文件夹下新建PeaAI脚本
-
选中Pea,将PeaAI拖给Pea
-
双击打开脚本,并编辑
-
给PeaAI脚本赋值
-
在Scripts文件夹下创建PeaShooterAI脚本,并将脚本拖给PeaShooter
-
双击PeaShooterAI脚本,编辑,实现时间间隔攻击
-
给PeaShooter赋值
-
将PeaShooterAI禁用
-
将Pea禁用
-
当克隆豌豆的时候激活,在PeaShooterAI脚本中添加
-
在LW_DragDropItem脚本中添加
-
但这只针对PeaShooter才有PeaShooterAI,如果是SunFlower则会报错,为了改错,所以增加一个PlantAI类,做为PeaShooter和SunFlower的父类,得到父类的脚本就是间接的得到了前面游戏对象的对应的子类的脚本
-
让PeaShooterAI类继承PlantAI
-
相应的增加一个SunFlowerAI类,让它继承PlantAI,把SunFlowerAI脚本挂在到SunFlower身上
将PeaShooter继续放回原位,透明度设为1
-
在PlantAI中添加
-
更改脚本内容,判断豌豆射手所在的行号的出生点是否有僵尸出生
-
修改一处错误,这两句移到括号里面,不然如果surface不是Cell标签,就会销毁拖拽的植物,然后继续对这个销毁的植物进行操作,会出现报错
-
豌豆碰到僵尸,僵尸掉血直到死亡
-
首先给豌豆和僵尸都添加碰撞盒
因为Pea是PeaShooter的子物体,为了方便观察,所以把PeaShooter的透明度改为255,不透明
-
Pea设为可见
-
选中Pea,给豌豆添加碰撞盒,点击Is Trigger改为触发器,点击Edit Collider进行编辑
-
可以在Scene视图中直接对豌豆的碰撞盒编辑
将PeaShooter的透明度继续改回1
-
Pea设为不可见
-
给僵尸添加碰撞盒和刚体
将Zombie的预设体拖到场景中,对其操作
-
添加刚体(发生碰撞检测的条件:两个碰撞的物体都有碰撞盒且其中一个有刚体)
-
勾选Is Trigger改为触发器,调整中心位置和尺寸
-
让僵尸的碰撞盒和每个格子的大小差不多,不然会存在如果其他道路的子弹碰到当前道路的僵尸的碰撞盒也会触发的BUG
-
修改完后,点击Apply给预设体应用当前的修改
-
删除场景中Zombie
-
添加代码
-
在zombieAI中添加受伤的方法
-
找到Zombie预设体,赋值血量
-
找到PeaAI脚本,添加触发检测的代码
-
-
增加僵尸死亡的精灵图片到僵尸图集中
-
选中zombie,把原先自己写的zombieAnimaiton移除掉
-
点击下面的Add Component,输入SpriteAnimation,点击之后添加,然后修改值
-
-
僵尸碰到植物,植物掉血直到死亡
添加僵尸吃的精灵图片到僵尸图集中
-
选中Eat的图片,添加到僵尸图集
-
找到PlantAI脚本,添加受伤的方法
-
给豌豆射手和向日葵添加血量
-
在PeaShooterAI脚本中的Start中添加
-
在SunFlowerAI脚本中的Start中添加
-
-
为了方便测试,把僵尸的血量改的大一些
-
修改zombieAI代码
-
添加Plant标签,把SunFlower和PeaShooter的标签更换为Plant
-
选中SunFlower和PeaShooter的碰撞盒的Is Trigger勾选上
-
在LW_DragDropItem脚本中添加激活碰撞盒的代码
到这里后,僵尸可以吃植物了,但植物死了还在播放吃的动画,且在原地不动
-
继续在zombieAI中添加代码,让僵尸恢复行走状态
-
植物大战僵尸(二)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...