SpriteMove脚本 挂在蛇头身上
using UnityEngine;
/// <summary>
/// 蛇形移动脚本 挂在蛇头身上
/// </summary>
public class SpriteMove : MonoBehaviour
{
//蛇身数组
public Transform[] childs;
//移动x.y
private float x, y;
//移动距离 自定
private float step = 0.15f;
void Update ()
{
//蛇形移动 (!= step 不加限制自己测试一下会出现什么效果)
if (Input.GetKeyDown(KeyCode.W) && y != -step)
{
y = step;
x = 0;
//旋转蛇头图片
transform.rotation = Quaternion.Euler(0, 0, 0);
Move();
}
if (Input.GetKeyDown(KeyCode.A) && x != step)
{
y = 0;
x = -step;
transform.rotation = Quaternion.Euler(0, 0, 90);
Move();
}
if (Input.GetKeyDown(KeyCode.S) && y != step)
{
y = -step;
x = 0;
transform.rotation = Quaternion.Euler(0, 0, 180);
Move();
}
if (Input.GetKeyDown(KeyCode.D) && x != -step)
{
y = 0;
x = step;
transform.rotation = Quaternion.Euler(0, 0, -90);
Move();
}
//Debug
if (Input.GetKeyDown(KeyCode.W) )
{
Debug.Log("-- W --");
}
if (Input.GetKeyDown(KeyCode.A) )
{
Debug.Log("-- A --");
}
if (Input.GetKeyDown(KeyCode.S) )
{
Debug.Log("-- S --");
}
if (Input.GetKeyDown(KeyCode.D))
{
Debug.Log("-- D --");
}
}
/// <summary>
/// 移动方法
/// </summary>
private void Move()
{
//储存当前自身 (蛇头的位置)
Vector3 pos = transform.position;
//从蛇尾开始移动
for (int i = childs.Length - 2; i >= 0; i--)
{
//每个蛇尾都移动到它前一个目标点的位置
childs[i + 1].position = childs[i].position;
}
childs[0].position = transform.position;
//移动蛇头
transform.position = new Vector3(pos.x + x, pos.y + y, transform.position.z);
}
}
看效果