好记性不如铅笔头

C && C++, Unity3D, 编程

使用Unity3D4.5开发2D游戏

本文参考【 http://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started 】,代码和图片资源版权归原作者所有。

安装好Unity3D,激活。

CONTENTS

新建工程:

打开Unity3D,新建一个工程,名称为ZombieConga,注意设置工程为2D模式。如下图:

如果工程已经建立完了,也可以通过点击菜单【 Edit -> Project Settings -> Editor 】打开Inspector选项菜单,如下图:

添加资源:

访问地址【 http://www.raywenderlich.com/61532/unity-2d-tutorial-getting-started 】下载并且解压资源,然后我们用鼠标把图片拖动到工程区中,这里会自动把图片加载到资源中,并且自动新建一个Sprite。如下图:


也可以通过其他的方式载入其他的资源,如下图:

载入资源之后把Enemy,Cat,Background拖动到Scene中,如下图:

然后选中Scene中的元素,并修改下位置,把Enemy的位置设置为2,0,0。把Cat的位置设置为0,2,0。把Background的位置设置为0,0,0,如下图:

由于Zombie的图片是由4张图片组合而成,这里把它裁剪下。选中Zombie,在Inspector中设置【 Sprite Mode 】,如下图:


然后点击Inspector中Sprite Editor 】,进入修改对话框,点击【 Slice 】,修改下切片方法,如下图:

这里选中任何一个,可以修改一些属性,如下图:

最后点击上方的【 apply 】,保存。

这里笔记下第二种创建Sprite方法,点击【 GameObject -> Create Empty 】,新建一个Sprite,重命名为 zombie ,然后对该Sprite增加一个【 Sprite Renderer 】,如下图:

然后绑定下图片,如下图:

更改显示大小:

然后我们新建一个游戏显示大小支持iphone5,如下图:

为了更好的显示效果,搞定显示大小之后在调整下Camera的大小,如下图:

这里如何计算的请参考原网页,这里不再描述。

然后修改下Background,选中它,查看右边的Inspector,如下图:

为什么这么做请参考原网页,这里不再描述。

调整前后关系:

首先我们选中Cat,查看下它的【 Sorting Layer 】,如下图:

这里我们新建几个Sorting Layer,如下图:

然后修改下Cat,Enemy,Zombie的SortingLayer,使之一一对应,如下图:

编码:

首先我们对Zombie进行编码,使子支持4帧动画切换。

选中Zombie,添加一个Script,名字为ZombieAnimator,如下图:

然后修改为:

using UnityEngine;
using System.Collections;

public class ZombieAnimator : MonoBehaviour 
{
	public Sprite[] sprites;
	public float framesPerSecond;

	private SpriteRenderer spriteRenderer;

	// Use this for initialization
	void Start () 
	{
		spriteRenderer = renderer as SpriteRenderer;
	}
	
	// Update is called once per frame
	void Update () 
	{
		int index = (int)(Time.timeSinceLevelLoad * framesPerSecond);
		index = index % sprites.Length;
		spriteRenderer.sprite = sprites[ index ];
	}
}

 修改好Script之后,Inspector的界面应该如下图:

然后我们添加图画帧,首先锁住Zombie的Inspector,如下图:

然后选中zombie的4个图像,拖动到Sprites,如下图:

继续拖动,最后如下,并且把FPS设置为10:

然后我们运行下,效果就出来了。

为了让Zombie支持移动,我们这里再新建一个script,名字为ZombieController,内容为:

using UnityEngine;
using System.Collections;

public class ZombieController : MonoBehaviour {

	public float moveSpeed;
	public float turnSpeed;


	private Vector3 moveDirection;


	// Use this for initialization
	void Start () 
	{
		moveDirection = Vector3.right;	
	}
	
	// Update is called once per frame
	void Update () 
	{
		Vector3 currentPosition = transform.position;

		if( Input.GetButton("Fire1") ) 
		{
			Vector3 moveToward = Camera.main.ScreenToWorldPoint( Input.mousePosition );
		
			moveDirection = moveToward - currentPosition;
			moveDirection.z = 0; 
			moveDirection.Normalize();
		}

		Vector3 target = moveDirection * moveSpeed + currentPosition;
		transform.position = Vector3.Lerp( currentPosition, target, Time.deltaTime );

		float targetAngle = Mathf.Atan2(moveDirection.y, moveDirection.x) * Mathf.Rad2Deg;
		transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.Euler(0, 0, targetAngle), turnSpeed * Time.deltaTime);
	}
}

 然后我们修改下移动速度和转向速度,如下图:

然后就可以了。

备注:

游戏的官方的代码:【 http://cdn5.raywenderlich.com/wp-content/uploads/2014/01/ZombieConga-Part1-complete.zip 】

Unity3D中对于2D开发的官方教程:

http://cdn5.raywenderlich.com/wp-content/uploads/2014/01/ZombieConga-Part1-complete.zip 】

https://www.assetstore.unity3d.com/en/#!/content/11228

发表评论

5 + 20 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据