unity 做2D项目也很方便。  首先要调整camera的模式,camera 的检视面板参数如下:

perspective 模式就是平时用的 模式。摄像机到游戏物体是有角度的张开, 而 orthographic 模式则没有,两者的区别从侧面看就一目了然了:

Perspective类型

Orthographic

这两张图是截取雨松前辈的图,这是侧视图,相信大家一眼就看出了区别,不再过多解释;

下面是移动篇 ,按下WASD 控制 摄像机的上下左右移动。 按下 IJKL 控制 小马驹的移动(按下时小马驹序列图播放,松开时停留在最后一帧)。

图片是JPG格式的,由于切图的时候的失误没有保存为 PNG 格式,就用了JPG 格式。所以 shader的选择上选什么shader 也不重要了我就用了Transparent/Diffuse  这个自带的shader;

买代码我说个J8:

 using UnityEngine;
using System.Collections; public class MoveTest : MonoBehaviour
{
private GameObject horses;
private Object[] images;
private float timer;
public float fps=10f;//一秒10帧;
private int currentFrame;
// Use this for initialization
void Start ()
{
GameObject plane = GameObject.Find("Plane");
//得到面默认宽度
float size_x = plane.GetComponent<MeshFilter>().mesh.bounds.size.x;
//得到面宽度的缩放比例
float scal_x = plane.transform.localScale.x;
//得到面默认高度
float size_z = plane.GetComponent<MeshFilter>().mesh.bounds.size.z;
//得到面高度缩放比例
float scal_z = plane.transform.localScale.z; //原始宽度乘以缩放比例计算出真实宽度
float mapWidth = size_x * scal_x;
float mapHeight = size_z * scal_z; Debug.Log("得到面的位置:"+plane.transform.position);
Debug.Log("得到面的宽度:"+ mapWidth);
Debug.Log("得到面的高度:"+ mapHeight); horses = GameObject.Find ("player");
images = Resources.LoadAll ("xulieImages")as Object[];
} // Update is called once per frame
void Update ()
{
if (Input.GetKey (KeyCode.A)) {
this.transform.Translate (-0.1f, 0f, 0f, Space.World);
}
if (Input.GetKey (KeyCode.D)) {
this.transform.Translate (0.1f, 0f, 0f, Space.World);
}
if (Input.GetKey (KeyCode.W)) {
this.transform.Translate (0f, 0.1f, 0f, Space.World);
} if (Input.GetKey (KeyCode.S)) {
this.transform.Translate (0f, -0.1f, 0f, Space.World);
}
//this is horse's:
if (Input.GetKey (KeyCode.J)) {
horses.transform.Translate (-0.1f, 0f, 0f, Space.World);
DrawImages(images);
}
else
{
horses.renderer.material.mainTexture=images[currentFrame]as Texture;
}
if (Input.GetKey (KeyCode.L)) {
horses.transform.Translate (0.1f, 0f, 0f, Space.World);
DrawImages(images);
}
else
{
horses.renderer.material.mainTexture=images[currentFrame]as Texture;
}
if (Input.GetKey (KeyCode.I)) {
horses.transform.Translate (0f, 0.1f, 0f, Space.World);
DrawImages(images);
}
else
{
horses.renderer.material.mainTexture=images[currentFrame]as Texture;
} if (Input.GetKey (KeyCode.K)) {
horses.transform.Translate (0f, -0.1f, 0f, Space.World);
DrawImages(images);
}
else
{
horses.renderer.material.mainTexture=images[currentFrame]as Texture;
} } public void DrawImages(Object[]useImages)
{
timer+=Time.deltaTime;
//序列图切换函数
if (timer>=1.0/fps) {
currentFrame++;
timer=;
//溢出归零;
if (currentFrame>=useImages.Length) {
currentFrame=;
}
}
horses.renderer.material.mainTexture=useImages[currentFrame]as Texture;
} }

该脚本我把它挂在了 游戏对象Main Camera 上。 player 是一个plan 对象:

动态改变的是 play 这个面片的材质的主贴图;上面的脚本用到了 Resources.LoadAll 函数,下面解释一下 这个函数的使用方法 以及一个官方的案例:

Resources.LoadAll 加载全部

static function LoadAll (path : string, type : Type) : Object[]

加载Resources文件夹中的path文件夹或者文件中的所有资源。

如果path是一个文件夹,文件中的所有资源都将被返回。如果path为一个文件,只有这个资源将被返回。只有type类型的物体将被返回。Path相对于Resources文件夹。Resources文件夹可以在Assets文件夹中的任何位置。

//加载"Resources/Texture"文件夹中所有资源
//然后从列表中选择随机的一个
//注意:Random.Range这里返回 [低,高)范围,例如,高值不包括在内。
 using UnityEngine;
using System.Collections; public class example : MonoBehaviour {
void Start() {
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
Object[] textures = Resources.LoadAll("Textures", typeof(Texture2D));
Texture2D texture = textures[Random.Range(, textures.Length)];
go.renderer.material.mainTexture = texture;
}
}

unity 之2D游戏简单操作的更多相关文章

  1. Siki_Unity_1-8_使用Unity开发2D游戏_PongGame

    Unity 1-8 使用Unity开发2D游戏 PongGame 任务1:演示 http://pan.baidu.com/s/1pKUHsev; up2i 任务2:案例介绍 创建PongGame,注意 ...

  2. Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏

    Unity 2D游戏开发高速入门第1章创建一个简单的2D游戏 即使是如今,非常多初学游戏开发的同学.在谈到Unity的时候.依旧会觉得Unity仅仅能用于制作3D游戏的. 实际上.Unity在2013 ...

  3. 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下

    写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...

  4. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...

  5. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:Visual Studio 图形 API:Win2D MSDN 教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面你需要考虑图形.输入和网络 以及相对独立的 ...

  6. Unity 2D游戏开发教程之精灵的死亡和重生

    Unity 2D游戏开发教程之精灵的死亡和重生 精灵的死亡和重生 目前为止,游戏项目里的精灵只有Idle和Walking这两种状态.也就是说,无论精灵在游戏里做什么,它都不会进入其它的状态,如死亡.于 ...

  7. Unity 2D游戏开发教程之摄像头追踪功能

    Unity 2D游戏开发教程之摄像头追踪功能 上一章,我们创建了一个简单的2D游戏.此游戏中的精灵有3个状态:idle.left和right.这看起来确实很酷!但是仅有的3个状态却限制了精灵的能力,以 ...

  8. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  9. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

随机推荐

  1. C++编译指令#pragma pack的配对使用

    #pragma pack可以用来指定C++数据结构的成员变量的内存对齐数值(可选值为1,2,4,8,16). 本文主要是强调在你的头文件中使用pack指令要配对使用,以避免意外影响项目中其他源文件的结 ...

  2. CSS特殊性

    样式的优先级取决于特殊性,特殊性为0,0,0,0 Ø每个元素或伪元素选择器贡献特殊性为 0,0,0,1 Ø每个类.伪类或者属性选择器的特殊性为 0,0,1,0 Ø每个ID选择器的特殊性为 0,1,0, ...

  3. php中计算中文字符串长度、截取中文字符串

    在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数 ...

  4. windows下配置lamp环境(4)---安装MySQL数据库5.6

    图解安装MySQL数据库 1.获取软件就多不说了 2.双击开始安装 3.点击点击NEXT进行下一步 4.同意协议,点击NEXT进入下一步 5.选择指定安装位置安装方法,进入安装位值选择页面: 6.分别 ...

  5. 绘制数据图表的又一利器:C3.js

  6. Asp.Net 控件radio 的简单使用

    js: <script type="text/javascript"> function ok() { document.getElementById("tx ...

  7. iOS开发之常用第三方框架(下载地址,使用方法,总结)

    iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...

  8. 资本助力转型 TCL攻守转换(转型、并购、过冬前一定要保留强大的战略预备队)

    吴侨发 9月份,TCL集团(3.92, 0.00, 0.00%)160多位高管启动四天戈壁行.在戈壁行第三天,30多公里的戈壁,差不多等于平路50公里,最后两只队伍走了13个小时.路途的艰辛几乎超过这 ...

  9. BZOJ2393: Cirno的完美算数教室

    2393: Cirno的完美算数教室 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 138  Solved: 83[Submit][Status] D ...

  10. 【转】如何删除一个repository(仓库)

    原文网址:http://my.oschina.net/anna153/blog/377758?p=1 如何删除自己创建的一个项目,我浏览了一下github网站,确实不太容易找到删除功能.这里介绍一下啊 ...