赞
踩
主要内容:
1.Unity3D引擎中的基础设置。
2.2D场景的搭建,预制体制作。
3.2D动画的制作。
4.图片图集的有关知识。
5.碰撞器,触发器,碰撞检测与触发检测。
6.2D游戏渲染的一些知识。
7.敌人AI的编写。
8.UGUI有关内容,场景切换等。
所需资源包链接:https://pan.baidu.com/s/199wuwMiucKDQfZR54Skwxg?pwd=a6pa
提取码:a6pa
————————————————————开始———————————————————
一、新建项目、导入资源
新建个2D项目,将所有的图片贴图模式改为2D ANDUI
二、场景搭建
1.设置主摄像机:size(离屏幕位置)设置为8.5
2.Background设置为黑色游戏显示
3.窗口设置为 5:4
4.图集的加工:导入素材的Texture调整为Sprite(2D and UI),点击apply。
5.Sprite Mode:Multiple(图片的默认属性是single,这代表此图片在这里视为一个单独的精灵来处理)。
5.Sprite Mode:Multiple(图片的默认属性是single,这代表此图片在这里视为一个单独的精灵来处理)
切割图集(需要切割):点击Sprite Editor——Slice——Automatic ——点击Slice(调整大小,获得尺寸)——Grid By Size(按照固定大小切割)——点击Slice——自行切割找到合适尺寸,W28H28,将大小填入切割的尺寸即可。
三、游戏中预制体的制作,2D动画的制作
1.Play1拖入Hierarchy面板下
2.Unity开发以米为单位,将坦克Scale调整为3,3,3。改名为Player
3.在Project面板下,新建文件夹Prefabs存放预制体,拖入Player
4.再把Map下的石头、墙、水、草等拖入Hierachy面板下
5.解决每个图片都要调整大小问题:Sprite Render组件下的Sprite控制显示的图片,Ctrl+D复制几个一样的物体,再拖入图片到Sprite下。
6.创建存放动画和存放动画控制器的文件夹Animation和AnimatorControllerBorn
2D动画:鼠标单击选择第一张图片按住Shift选择最后一张图片,拖入Hierarchy面板下,弹出窗口命名动画名字,命名为Born,Hierarchy面板下改名为Born。大小调整为3,3 ,3
7.创建存放动画和存放动画控制器的文件夹Animation和AnimatorControllerBorn
2D动画:鼠标单击选择第一张图片按住Shift选择最后一张图片,拖入Hierarchy面板下,弹出窗口命名动画名字,命名为Born,Hierarchy面板下改名为Born。大小调整为3,3 ,3。控制器改名为BornController,与动画分别拖入相应文件夹下。
在预制体Prefabs文件夹下创建Map文件夹存放地图和Effect特效文件夹
同理,创建爆炸特效Boom和无敌效果Born2,河流Water取消显示摄像机Gizmos,叉掉Camera旁边的摄像机
四、控制玩家的移动(Player脚本)
1.创建新的文件夹Script,存放所有的脚本。
2.创建(Player)脚本,添加在玩家坦克身上
3.控制游戏物体移动,在Update函数中后面因碰撞抖动问题需要改在FixedUpdate函数中,
四、控制玩家的移动-不同方向移动的图片切换(Player脚本)
1.拿到Sprite组件,更改它的属性值
2.拿到渲染器的引用:
3.在Awake函数中(一开始就拿到),Start函数之前
4.拿到切换图片的引用:并在Unity中分别把对应图片拖入
五、碰撞器的添加,解决坦克旋转、抖动问题
1.发生碰撞的物体身上都应该有碰撞器,其中一方(最好是运动的一方)身上要有刚体。
给Player游戏物体添加Box Collider 2D(2D游戏碰撞器)和刚体Rigibody 2D,将重力改为0
2.Map里所有的物体添加Box Collider 2D(2D游戏碰撞器),草不用,因为草可以通过
3.解决旋转问题:选择Player游戏物体,在Rigibody 2D下的Constraints勾选上z轴
4.解决抖动问题:Unity内置的生命周期函数(固定物理帧)
六、移动优先级的添加,2D渲染层级问题(Player脚本)
1.解决同时按两个键,斜着走的问题。垂直优先。先确定V
2.然后把控制移动的代码封装成一个方法,在FixedUpdate中调用
3.渲染的优先级:Order in Layer层级越大,越后渲染。Born、Grass设置为1
4. 添加子弹,层级设置为1,拖入Tank文件夹下做成预制体。爆炸特效层级也设置为1
七、坦克的攻击方法及子弹朝向(Player脚本)
1.拿到子弹预制体的引用,定义子弹旋转角度
2.当按下空格的时候实例化一个子弹
、
3.弹朝向问题的解决,移动方法的编写。旋转图片——旋转Z轴
八、子弹移动脚本,攻击CD的加入
1.创建子弹的脚本(BulletFly),在Update里面设置子弹移动
2.设置子弹CD(Player脚本)
设置计时器 同时将子弹实例化的方法中加入使得每次射击后时间归零
3.给子弹添加触发器,给子弹添加Rigidbody2D,重力设置为0。
九、空气墙的制作,标签的添加
1.找到不可通过及消灭的岩石,将其贴图删除即可成为空气墙
2.给每个预制体添加对应的Tag(标签)
3.在(BulletFly脚本)添加完善碰撞检测
十、玩家无敌方法与死亡方法的编写(Player脚本)
1.声明爆炸特效、保护特效、是否复活、无敌时间
2. 坦克死亡方法
3. 坦克无敌方法
4.将无敌特效放置为坦克的子物体,并将其渲染层级改为-1
十一、区别玩家的子弹与敌人的子弹
1.在(BulletFly脚本)中加入判断语句,是否为玩家子弹
2.为玩家坦克生成子弹的时候添加一条语句(Player脚本)
十二、制作玩家出生特效(Born脚本)
1.新增Born脚本用于玩家的初始生成
2.在Unity中将玩家坦克预制体拖入
十三、敌人出生特效(Born脚本)
用同样的产生特效随机生成两种敌人,改写Born脚本代码,并在Unity中拖入制作好的两种敌人预制体
十四、敌人AI的编写(Enemy脚本)
1.新建(Enemy脚本)编写敌人自动攻击和移动的代码,将Player脚本复制进去,并进行修改。
修改攻击方法,不需要摁下空格键攻击,会自动攻击
2.修改移动方法
十五、在地图上生成不同元素(MapCreation脚本)
1.新建个空物体命名“MapController”,赋予新脚本“MapCreation”.
2.使用数组存放所有元素,在Unity中拖放好
3. 写一个实例化物体的方法(可以将实例化出的物体作为子物体放置在脚本所在物体下)
4.找好老家的位置,空气墙的位置,通过封装好的实例化物体的方法进行实例化
5.在随机产生墙、水、敌人、障碍、草的物体时,需要采用数组来记录已经使用过的位置,防止一个位置上实例化两个物体
6.写一个随机产生位置的方法
7.判断位置列表中是否有与产生位置重复
8.实例化游戏中的元素、玩家、敌人
十六、玩家重生、得分(PlayerController脚本)
1.新建脚本“PlayerController”,实例化instance
2.Ctrl+R+E可快速部署
3.实例化单例
4.声明生命值、得分、是否死亡
5.重生的方法(若生命值0返回开始界面)
6.在Update中调用重生方法
7.若玩家死亡在“Player脚本”中,找到死亡方法,添加调用isDead的属性值
8.若敌方死亡在“Enemy脚本”中,找到死亡方法,添加调用Score的属性值
十七、UI制作
1.将资源中的 作为5:4背景底色,将主摄像机的颜色调为灰色
2.游戏窗口比例设为16:10
3.使用Image、Text制作得分和生命值
4.(PlayerManager脚本)公开两个文本属性,在Unity中赋值
5.在Update中让文本随得分和生命值变化
6.在Unity中制作游戏失败的图片并赋值
7.在Update中显示游戏失败,并暂停运行
————————————————具体开发流程结束——————————————————
游戏内图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。