这是unity官方的一个视频教程。比较完整的一个2D小游戏,共14讲。
http://unity3d.com/learn/tutorials/projects/2d-roguelike
这里整理了一些tips。
游戏控制一个2D帧动画的人物在tile地图上行走,目的是走到出口。地图上有食物、敌人、阻挡。移动消耗食物,碰到敌人会自动攻击。
第一部分 准备资源
1 介绍
tag、layer、sortinglayer的用法:
tag 是标识gameobject用的。
layer 一共32个不能扩展,类似分类的概念。射线选择和渲染可以指定感兴趣的layer。
sortinglayer 在render里选择的,决定2D排序用的。
2 player和enemy的prefab
制作prefab:
prefab就是gameobject的预置模板,建立好后方便clone建立gameobject无论是在编辑时和脚本中。
player的prefab涉及加精灵动画、做AnimationController(AC)、选tag、layer、sortinglayer、加Rigibody控制用。
加精灵动画:
这个游戏是简单的帧动画,美术资源已经按照固定大小做好了每帧画面。
选中一个动作的所有帧拖到gameobject就会生成一个动画文件(这时有对话框要起文件名和选路径)和一个配套的AnimationController。
AnimationController(AC):
例子里用AC调整了动画速度。
2种敌人公用一个AC使用Create Animator Override Controller 这种AC会要求指定一个AC状态机和选择override动画。
添加rigidbody来控制:
选中IsKinematic这样就不会被物理系统本身影响,但可以使用其控制gameobject。
3 Tile(地形块)prefab
为每个Tile元素建立perfab:
Tile prefab没有动画的情况(只使用单帧资源)添加一个SpiriteRender然后从资源里拖一帧上去。
注意和有动画的tile(可以打碎的tile)区分。
trigger:
Exit、Food之类的要交互,加上Box Collider并设置trigger这样就可以重叠而不受物理系统约束了。
wall之类的trigger就不设置了,要利用物理系统达到Player不能重叠墙的效果。
第二部分 关卡和整体结构
1 board manager
管理关卡场景的脚本。
生成地图、放置元素等功能。
2 game manager
编辑状态数组批量赋值:
可以点击右边图标lock inspector,多选prefab拖动到脚本public的gameobject数组上。
singleton的一个实现:
singleton简单说就是个全局变量。
public static GameManager instance = null;
//Awake is alway