本文参考【 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 】
发表评论