Unity 3D 手机游戏开发学习随笔
2017-05-24 11:17
615 查看
——————————————————————————————————————————–
快速入门
本章主要介绍什么是Unity,Unity的安装和激活,并使用Unity创建一个运行在PC平台的Hello World程序。Unity 简介
Unity(也称Unity3D)是一套包括图形、声音、物理等功能的游戏引擎,提供了一个强大的关卡编辑器,支持大部分主流3D软件格式,使用C#或JavaScript等高级语言实现脚本功能,使开发者无需了解底层复杂的技术,快速的开发出具有高性能、高品质的游戏产品。特别棒的游戏网站——http://www.kongregate.com
第一人称射击游戏
策划
1、游戏介绍。在游戏场景中,会有若干个敌人的出生点,它会定时生成一些敌人,他们会寻找并攻击主角。游戏的目的就是生存下去,消灭更多的敌人,获取更多分。2、UI界面。游戏中的UI比较简单,包括主角的生命值、弹药数量、得分和瞄准星。游戏失败后提供一个按钮重新开始游戏。
3、主角。我们看不到主角本人,在屏幕上看到的是一支端在胸前的M16 机关枪。按键盘的W、S、
A、D键控制主角前后左右行动,移动鼠标旋转视角,按鼠标左键进行射击。
4、敌人
敌人只有一种,是一个护士模样的僵尸,它将具有智能寻路功能,躲避障碍物,并攻击主角。
游戏场景
首先我们要准备一个游戏的场景,场景中的美术光盘提供,但我们还需进行一些设置,使其具有碰撞功能。创建两个Plane及相应的material,作为火星表面和星空背景
摄像机视角调整和确定:alt+鼠标左键;GameObject→Align With View
Unity3D “xx AnimationEvent has no function name specified!”解决方案
创建主角
这个游戏的主角是一艘太空飞船,我们将使用一个飞船模型作为主角的游戏体,并赋予它一个脚本,控制它的运动。脚本是实现游戏逻辑的核心,它本身并不能独立运行,它必须作为某个游戏体的组件才能运行。1、创建脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float m_speed = 1; // Use this for initialization void Start () { } // Update is called once per frame void Update () { //纵向移动距离 float movev = 0; //水平移动距离 float moveh = 0; if (Input.GetKey(KeyCode.UpArrow)) { movev -= m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.DownArrow)) { movev += m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.LeftArrow)) { moveh += m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.RightArrow)) { moveh -= m_speed * Time.deltaTime; } //移动 this.transform.Translate(new Vector3(moveh, 0, movev)); } }
Input 是一个包装了输入功能的类,它包括几乎所有的键盘、鼠标或触控操作函数。
Time.delta Time 表示每帧的经过时间,那些需要每帧做增减变动的数值都需要乘上Time.deltaTime 。在我们这个例子中,速度与Time.deltaTime 相乘,表示每帧移动N 米距离。
tliis.transform 调用的是游戏体的Transform 组件, Transform 组件提供的主要功能都是和移动、旋转、缩放游戏体有关的。我们调用了Translate 函数移动游戏体,其中有一个Vector3类型的参数,用来表示x 、y、z 三个方向上的移动距离。
在Update 函数中每帧都去调用this.transform组件会造成一定的效率问题,我们可以在对象初始化时只调用一次并将其保存起来。Start 函数会在对象被实例化时自动调用一次,我们可以在这里做一些初始化工作,然后在Update 函数中修改控制移动的代码,将this.transform 替换为this.m_ transform,这样程序就不用每帧去查找Transform 组件,提高了程序的运行效率。
可以在编辑器窗口改变speed的值,只有public类型的属性才可以在编辑器窗口中实例化。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float m_speed = 1; // Use this for initialization protected Transform m_transform; void Start () { m_transform = this.transform; } // Update is called once per frame void Update () { //纵向移动距离 float movev = 0; //水平移动距离 float moveh = 0; if (Input.GetKey(KeyCode.UpArrow)) { movev -= m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.DownArrow)) { movev += m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.LeftArrow)) { moveh += m_speed * Time.deltaTime; } if (Input.GetKey(KeyCode.RightArrow)) { moveh -= m_speed * Time.deltaTime; } //移动 this.m_transform.Translate(new Vector3(moveh, 0, movev)); } }
2、控制飞船移动:将脚本拖动到模型即可
3、创建子弹:飞船需要发射子弹,先创建它的游戏体和脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rocket : MonoBehaviour { //子弹飞行速度 public float m_speed = 10; //生存时间 public float m_liveTime = 1; //威力 public float m_power = 1.0f; protected Transform m_transform; // Use this for initialization void Start () { m_transform = this.m_transform; } // Update is called once per frame void Update () { m_liveTime -= Time.deltaTime; if (m_liveTime <= 0) Destroy(this.gameObject); m_transform.Translate(new Vector3(0, 0, -m_speed * Time.deltaTime)); } }
4、创建子弹prefab
5、发射子弹:使用Instantiate 函数动态的创建子弹游戏体。
——————————————————————————————————————————–
随机阅读:相关文章推荐
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- 学习手机游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
- 【手游游戏引擎】学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D (一)
- 【手游游戏引擎】学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D (二)
- 【Unity 3D游戏开发学习笔记】粒子光环
- 【Unity 3D游戏开发学习笔记】 UI System
- 【Unity 3D游戏开发学习笔记】总结摄像机和光源的使用方法
- Unity 游戏开发实战学习随笔
- Unity 3D游戏开发学习笔记(2) 牧师与魔鬼
- 【Unity 3D游戏开发学习笔记】实现太阳系
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(八)----用TouchScreenKeyboard弹出键盘
- 强大的游戏开发工具Unity3D推出2D开发工具,unity将混合3D与2D开发
- Unity 3D游戏开发工具
- 强大的游戏开发工具Unity3D推出2D开发工具,unity将混合3D与2D开发
- Android——Cocosd2d-x手机游戏开发学习思路
- Android——Cocosd2d-x手机游戏开发学习思路
- Android OpenGL(二) 学习《Android 3D 游戏开发技术宝典 -openGL ES 2.0》