一个人的开发
目前为止由我一个人复刻或独立制作的游戏
复刻游戏:坦克大战(Battle City)
游戏的编写使用Unity 3D引擎,从游戏脚本的设计到整个逻辑的梳理均由我一人完成,作为独立制作的第一款游戏,带给了我很多新的知识,同时对于游戏制作的过程有了一个初步的认识
游戏中涉及到的一些比较重要的思想与方法:
- 简单AI的编写:控制敌人的走位与设计,通过简单定时器或是协程的编写来随机控制敌人的移动与攻击;
- 为无敌状态设置布尔类型开关,并使用简单计时器累加Time.Deltatime来控制无敌状态时间;
- 使用单例模式的游戏管理器对象来在初始化中进行静态对象的赋值来控制得分与玩家生命值。
游戏的源码与成品请通过以下链接进行下载:(可运行成品在Game文件夹下)
https://pan.baidu.com/s/1b2y7PLyJFXNcK9WKjlBqwA
提取码:3dn9
复刻游戏:愤怒的小鸟
本游戏采用Unity3D引擎制作,在前面坦克大战的基础上总结了许多经验,对于脚本有了很大的优化。作为一款物理引擎提供主要玩法的游戏,我仍在游戏的制作过程当中收获颇丰。
游戏制作中一些重要的思路与组件:
- Spring Joint组件提供了小鸟在弹弓上的弹性效果,使得当玩家发射以后可以根据弹弓拉伸的长度来进行力与初速度的计算,并且刚体的动力学与运动学开关需要在此时被切换,来保证Spring Joint组件失活以后小鸟能够维持一定的初速度;
- 不同种类的小鸟采用子类继承基类并重写虚方法来让不同种类的小鸟拥有不同的技能,在回旋镖的绿鸟的设计过程当中,飞行过程的回旋效果可以使用给定加速度来进行;
- UI动画的设计与按钮的添加,对UI采用单独摄像机的渲染模式能够让UI界面不影响到游戏主界面;
- 不同关卡获得的星星数可以使用Unity类库中提供的PlayerPrefs的字典来进行储存与调用;
- 多个关卡的设计与读取可以将关卡制作为预制体,再通过:Instantiate(Resources.Load(PlayerPrefs.GetString("currentLevel")));读取通过PlayerPrefs键值对获取到的预制体来生成关卡;
- 拖尾效果可以通过Unity的粒子系统来实现。
游戏的源码与成品下载地址:(可运行成品在Game文件夹下)
https://pan.baidu.com/s/1_fZJljNHCHWyW8yAqul0WQ
提取码:ouz0
原创游戏:简单塔防游戏
前两部游戏的开发让我对于Unity3D引擎有了比较深刻的认识,在逐渐熟悉Unity类库过后,也独立开发出了一个简单的塔防游戏,作为从2D游戏到3D游戏开发的过渡。
在游戏开发中比较重要的思路与设计理念:
- 采用不继承MonoBehaviour的数据类用于储存敌人每一波的信息,并为其设置可序列化让其能够在unity Inspectors面板中快速设置为后续的敌人设置铺路;
- UI面板的选项与炮塔的建设仍然采用数据类,将对应的炮塔对象传递给每一个平台,并在平台的指定位置生成炮塔,建设过炮塔的平台可以打开升级或拆除的UI面板,该UI面板采用世界坐标进行渲染。
- 子弹的追踪是在每一帧下对敌人的位置进行指向并移动一定距离来完成的,激光塔的激光可以通过LineRenderer进行线的渲染来达成激光的效果。
- 炮塔的转向可以使用:
Quaternion.FromToRotation(被转向物体的某个轴, Vector3类型的某个向量);
来让其一直面朝敌人列表中的第一个敌人(子弹也是这个操作)。
游戏的源码与成品可以通过下面的链接下载:(可运行成品在Game文件夹下)
https://pan.baidu.com/s/1oB2i3AptM7_nNCqXl00QYQ
提取码:8gso
设计案例
项目设计文档
千年之旅-温泉系统
移动端二次元美少女卡牌回合制对战游戏——《千年之旅》中的一个边缘系统设计文档,详细包含了交互、界面跳转、数据表设计、特效分镜等内容。