主要内容:
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.发生碰撞的物体身上都应该有碰撞器,其中一方(最好是运动的一方)身上要有刚体。
给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.找到不可通过及消灭的岩石,将其贴图删除即可成为空气墙
3.在(BulletFly脚本)添加完善碰撞检测
十、玩家无敌方法与死亡方法的编写(Player脚本)
2. 坦克死亡方法
3. 坦克无敌方法
十一、区别玩家的子弹与敌人的子弹
1.在(BulletFly脚本)中加入判断语句,是否为玩家子弹
2.为玩家坦克生成子弹的时候添加一条语句(Player脚本)
十二、制作玩家出生特效(Born脚本)
1.新增Born脚本用于玩家的初始生成
十三、敌人出生特效(Born脚本)
用同样的产生特效随机生成两种敌人,改写Born脚本代码,并在Unity中拖入制作好的两种敌人预制体
十四、敌人AI的编写(Enemy脚本)
1.新建(Enemy脚本)编写敌人自动攻击和移动的代码,将Player脚本复制进去,并进行修改。
修改攻击方法,不需要摁下空格键攻击,会自动攻击
2.修改移动方法
十五、在地图上生成不同元素(MapCreation脚本)
1.新建个空物体命名“MapController”,赋予新脚本“MapCreation”.
2.使用数组存放所有元素,在Unity中拖放好
3. 写一个实例化物体的方法(可以将实例化出的物体作为子物体放置在脚本所在物体下)
4.找好老家的位置,空气墙的位置,通过封装好的实例化物体的方法进行实例化
5.在随机产生墙、水、敌人、障碍、草的物体时,需要采用数组来记录已经使用过的位置,防止一个位置上实例化两个物体
6.写一个随机产生位置的方法
十六、玩家重生、得分(PlayerController脚本)
1.新建脚本“PlayerController”,实例化instance
7.若玩家死亡在“Player脚本”中,找到死亡方法,添加调用isDead的属性值
8.若敌方死亡在“Enemy脚本”中,找到死亡方法,添加调用Score的属性值
十七、UI制作
1.将资源中的 作为5:4背景底色,将主摄像机的颜色调为灰色
2.游戏窗口比例设为16:10
4.(PlayerManager脚本)公开两个文本属性,在Unity中赋值
————————————————具体开发流程结束——————————————————
游戏内图