-
准备
四张图
以上
-
将图片拖入工具中
-
为除背景之外的每一张图三都建立一个视图层
-
选择僵尸的图片,如图操作,准备将图片切割
-
在此可以选择需要适配的分辨率,也可以自己定义
-
观察背景图的像素和尺寸
由于背景的比例和我们所选的分辨率不和,在Main Camera中修改
640 / 100 / 2 = 3.2
建立一个c# Script脚本文件,来使我们所裁剪的僵尸图片动起来
using UnityEngine;
using System.Collections;
public class Zembie : MonoBehaviour {
public Sprite[] sprites;//建立精灵数组,用来存储剪下来的图
public float framesspeed;//运动的速度
private SpriteRenderer spriterenderer;//定义一个渲染器
// Use this for initialization
void Start () {
spriterenderer = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update () {
int index = (int)(Time.timeSinceLevelLoad * framesspeed);//指数来代表时间和速度的乘积
index = index % sprites.Length;//因为用来显示精灵数组,大小不能超过精灵数组的长度
spriterenderer.sprite = sprites[index];//渲染器使图片动起来
}
}
-
把脚本文件和僵尸图片绑定
因为切了4张图,所以size为4,将速度也填上
- 写一个脚本使僵尸在Camera上发生位移
using UnityEngine;
using System.Collections;
public class ZembieControl : MonoBehaviour {
public float movespeed;
private Vector3 moveDirection; //vector3 三维 vector2 二维
public float turnspeed;//转头 以单元为尺寸
// Use this for initialization
void Start () {
moveDirection = Vector3.right;
}
// Update is called once per frame
void Update () {
Vector3 currentPostion = transform.position; //初始位置
if (Input.GetButton ("Fire1"))
{ //那是数字1 不是l Fire1就是鼠标左键 Fire2就是鼠标右键
Vector3 moveToward = Camera.main.ScreenToWorldPoint (Input.mousePosition);
//移动后的方向即为鼠标左键所点的方向
moveDirection = moveToward - currentPostion;
moveDirection.z = 0;
moveDirection.Normalize ();//归一化
}
Vector3 targetPostion = currentPostion + moveDirection * movespeed;//目标方向
transform.position = Vector3.Lerp (currentPostion, targetPostion, Time.deltaTime);
//Vector3.Lerp()差值函数
//由于不是闪现到达,所以需要时间差值移动(原位置,目标位置,差值时间)
float tagetAngle = Mathf.Atan2 (moveDirection.y, moveDirection.x) * Mathf.Rad2Deg;
//求角度 2:to Mathf.Rad2Deg 弧度求角度
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.Euler (0, 0, tagetAngle), turnspeed * Time.deltaTime);
//rotation 旋转 p1:目标位置 p2:角度 p3:每次旋转多少
}
}
-
把脚本绑定到僵尸图片上,修改速度
运行之后存有bug,鼠标点击之后僵尸会往那个方向跑,但是到达目的地之后并不会停下
- 未完待续