Unityr入门操作_2D游戏制作_039
2017-09-04 21:13
239 查看
2d游戏是指二维交互式动画,也就是我们通常所说的‘2d动画’。
二维交互式动画的基本特征如下(主要是针对3d游戏):
⒈贴图(参考上一篇)
传统的2d游戏中的美术资源(人物行走、人物状态、地图等等)都是以png或jpg的图形文件渲染而成,而3d游戏中的美术资源多数是以模型为主.
⒉视角(正交)
2d游戏是没办法完成视角转换的.因为2d游戏的美术资源是平面图.即某种美术资源的前、后、左、右不能够同时出现在游戏里.但3d游戏却可以完成视角转换.
⒊渲染(两者的差异)
2d游戏的所有美术资源可以不经过引擎的渲染就能使用,但3d游戏的任何美术资源都必须经过引擎的渲染才能使用.
操作流程:
1首先我们要建立一个2D的工程(区别于3D的)(Unity4.3增加了原生的2D开发环境。):
创建完成后如下图:(此时没有灯光)
此时我们可以把2D变为3D:
首先我们要添加一个灯光
然而场景还是2D的,此时我们就要做下图的操作
这样场景就变为3D的了,但这只能修改一个场景,再次生成场景时,系统依旧默认是2D场景,如果你想更改这个设置,可以选择”Edit\Project Settings\Editor”打开编辑器设置,在”Default Behavior Mode”中改模式为2D,如下图:
“Default Behavior Mode”(默认行为模式)定义你项目在导入Assets时的默认导入设置,当设置为3D模式时,Unity假设你将导入的文件创建为纹理类型(如:PNG文件);当设置为2D时,Unity假定你想要的导入的资源为Sprite类型
2创建工作层
为了使游戏对象在场景中的层次不会错乱,可以创建不同的工作层来管理游戏对象,从而使2D游戏 场景的层次更加分明,游戏对象之间的操作也更加方便
设置层的途径如下:
Edit–>Project Settings–>Tags and Layers命令或者直接单击编辑器的右上方的Layers–>Edit Layers然后添加工作层
点击+号来添加工作层
接下来我来做一个2D的效果:
首先是导入资源
然后我们要做一个大背景
我们先来装饰一下天空(加个移动的动物)
首先将动物图片进行切割
然后创建序列帧动画,
添加一个2D游戏对象将第一个动画填入其中
点击对象然后Ctrl+6进入面板将所有这一序列帧图画拖入其中
修改samples值来调节动画执行的速度
这时我们就需要编写脚本来控制对象的移动
using UnityEngine;
using System.Collections;
public class SwaFly : MonoBehaviour {
}
这时我们就要装饰地面了
我们可以添加几块土地,创建一个复制Ctrl移动
这是我们要考虑给地面加组件了(区别于3D我们这时添加组件都要添加2D的)
Linear Drag(摩擦力)
Angular Drag(旋转角摩擦力)
Gravity Scale(重力)
Constraints(冻结轴)
编写脚本随机生成
using UnityEngine;
using System.Collections;
public class CreateBall : MonoBehaviour {
}
显现如下:
这时我们可以再添加一个游戏对象(针对碰撞器):
这是一种线性碰撞器
添加并编辑
这时我们要注意,程序运行时我们会发现如果保龄球进入帽子是画风比较尴尬,
这时就要用到层的深度了越深的层越后渲染,每层中越深越后渲染
添加粒子系统:
还是同一个注意点,注意层数和深度,否则粒子特效会被遮盖住。
帽子移动和粒子系统生效的脚本
using UnityEngine;
using System.Collections;
public class HatMove : MonoBehaviour {
}
效果图如下:
二维交互式动画的基本特征如下(主要是针对3d游戏):
⒈贴图(参考上一篇)
传统的2d游戏中的美术资源(人物行走、人物状态、地图等等)都是以png或jpg的图形文件渲染而成,而3d游戏中的美术资源多数是以模型为主.
⒉视角(正交)
2d游戏是没办法完成视角转换的.因为2d游戏的美术资源是平面图.即某种美术资源的前、后、左、右不能够同时出现在游戏里.但3d游戏却可以完成视角转换.
⒊渲染(两者的差异)
2d游戏的所有美术资源可以不经过引擎的渲染就能使用,但3d游戏的任何美术资源都必须经过引擎的渲染才能使用.
操作流程:
1首先我们要建立一个2D的工程(区别于3D的)(Unity4.3增加了原生的2D开发环境。):
创建完成后如下图:(此时没有灯光)
此时我们可以把2D变为3D:
首先我们要添加一个灯光
然而场景还是2D的,此时我们就要做下图的操作
这样场景就变为3D的了,但这只能修改一个场景,再次生成场景时,系统依旧默认是2D场景,如果你想更改这个设置,可以选择”Edit\Project Settings\Editor”打开编辑器设置,在”Default Behavior Mode”中改模式为2D,如下图:
“Default Behavior Mode”(默认行为模式)定义你项目在导入Assets时的默认导入设置,当设置为3D模式时,Unity假设你将导入的文件创建为纹理类型(如:PNG文件);当设置为2D时,Unity假定你想要的导入的资源为Sprite类型
2创建工作层
为了使游戏对象在场景中的层次不会错乱,可以创建不同的工作层来管理游戏对象,从而使2D游戏 场景的层次更加分明,游戏对象之间的操作也更加方便
设置层的途径如下:
Edit–>Project Settings–>Tags and Layers命令或者直接单击编辑器的右上方的Layers–>Edit Layers然后添加工作层
点击+号来添加工作层
接下来我来做一个2D的效果:
首先是导入资源
然后我们要做一个大背景
我们先来装饰一下天空(加个移动的动物)
首先将动物图片进行切割
然后创建序列帧动画,
添加一个2D游戏对象将第一个动画填入其中
点击对象然后Ctrl+6进入面板将所有这一序列帧图画拖入其中
修改samples值来调节动画执行的速度
这时我们就需要编写脚本来控制对象的移动
using UnityEngine;
using System.Collections;
public class SwaFly : MonoBehaviour {
//起飞点 private Vector3 startPosition; //飞速 public float speed; // Use this for initialization void Start () { //这里的高度和宽度经测验发现是屏幕大小的一半 Debug.Log(Screen.width); Debug.Log(Screen.height); Vector3 screenSize = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0)); Debug.Log(screenSize); float swanExtentsX = transform.GetComponent<Renderer>().bounds.extents.x; transform.position = new Vector3(screenSize.x + swanExtentsX, transform.position.y, transform.position.z); startPosition = transform.position; } // Update is called once per frame void Update () { //if (transform.position.x < -startPosition.x) //{ // transform.position = startPosition; //} if (transform.position.x < -startPosition.x) { transform.Rotate(Vector3.up*180); } if (transform.position.x> startPosition.x) { transform.Rotate(Vector3.up * -180); } transform.Translate(Vector3.right*-1*speed*Time.deltaTime); }
}
这时我们就要装饰地面了
我们可以添加几块土地,创建一个复制Ctrl移动
这是我们要考虑给地面加组件了(区别于3D我们这时添加组件都要添加2D的)
Linear Drag(摩擦力)
Angular Drag(旋转角摩擦力)
Gravity Scale(重力)
Constraints(冻结轴)
编写脚本随机生成
using UnityEngine;
using System.Collections;
public class CreateBall : MonoBehaviour {
//产生范围 private float createRange; public GameObject objBall; //产生时间 public float rate; // Use this for initialization void Start () { Vector3 screenSize = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0)); float ballExtentsX = objBall.transform.GetComponent<Renderer>().bounds.extents.x; createRange = screenSize.x - ballExtentsX; } // Update is called once per frame void Update () { rate -= Time.deltaTime; if (rate<0) { Vector3 position = new Vector3(Random.Range(-createRange, createRange), transform.position.y, transform.position.z); GameObject ball = Instantiate(objBall, position, Quaternion.identity) as GameObject; //下一个产生的时间,使游戏更随机 rate = Random.Range(0,2.5f); Destroy(ball, 3); } }
}
显现如下:
这时我们可以再添加一个游戏对象(针对碰撞器):
这是一种线性碰撞器
添加并编辑
这时我们要注意,程序运行时我们会发现如果保龄球进入帽子是画风比较尴尬,
这时就要用到层的深度了越深的层越后渲染,每层中越深越后渲染
添加粒子系统:
还是同一个注意点,注意层数和深度,否则粒子特效会被遮盖住。
帽子移动和粒子系统生效的脚本
using UnityEngine;
using System.Collections;
public class HatMove : MonoBehaviour {
private float hatMoveRange; public GameObject particleSystemPoint; public GameObject particle; // Use this for initialization void Start () { Vector3 screenSize = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width,Screen.height,0)); float hatExtentsX = transform.GetComponent<Renderer>().bounds.extents.x; hatMoveRange = screenSize.x - hatExtentsX; } // Update is called once per frame void Update () { Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); float x = Mathf.Clamp(mousePosition.x, -hatMoveRange, hatMoveRange); transform.position = new Vector3(x, transform.position.y, transform.position.z); } void OnTriggerEnter2D(Collider2D col) { GameObject objtemp = Instantiate(particle,transform.position, Quaternion.identity)as GameObject; Destroy(col.gameObject); Destroy(objtemp,1); }
}
效果图如下:
相关文章推荐
- unity3d游戏制作入门教程
- Unity入门操作_2D动画播放_038
- 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)以及利用CCSprite与CCLayerColor制作简单遮盖层!
- 通过HTML5和WebGL来制作2D游戏
- unity3d开发2d游戏:自动寻路Navmesh入门
- Unity2D游戏入门教程(一)宝石迷阵(6)宝石下落
- 游戏修改器制作-黑客入门
- 开发者分享使用Unity制作2D游戏的技巧
- Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏
- 分享2D Unity游戏的动画制作经验
- 如何利用Bacon 2D来在Ubuntu平台上制作自己的游戏
- 第一个游戏动作开发日志——Unity2D的血条制作
- Unity 4.3 制作一个2D横版射击游戏(2)
- allegro入门笔记-部分常用操作与自定义封装的制作
- Unity3D研究院之2D游戏开发制作原理(二十一)
- Unity2D游戏入门教程(一)宝石迷阵(7)游戏结束
- Unity 2D游戏开发快速入门(内部资料)
- unity 2D游戏开发 制作帧动画的两种方法
- Cg入门22:Fragment shader - 2D纹理采样(光照贴图制作和使用)
- 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程