/*--------------------------------------------------------------------
- Author Name: DXL
- Creation Time: 2/27/2019 11:11:07 AM
- File Describe: Spine做乒乓移动效果
- ------------------------------------------------------------------*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public enum MoveDir
{
Up,
Down,
Left,
Right
}
public class MovePingpong : MonoBehaviour
{
public MoveDir dir; //初始移动方向
public float speed; //移动速度
public bool changeX; //是否在调整方向时改变X
public bool changeY; //是否在调整方向时改变X
public bool isStop; //是否停止
public float leftLine; //左边界
public float rightLine; //右边界
public float upLine; //上边界
public float downLine; //下边界
float di = 1; //当前方向
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (isStop)
{
return;
}
Vector3 nowPos = gameObject.transform.localPosition;
//left or right
if (dir == MoveDir.Left || dir == MoveDir.Right)
{
int initDir = dir == MoveDir.Left ? -1 : 1;
float x = nowPos.x + speed * Time.deltaTime * di * initDir;
gameObject.transform.localPosition = new Vector3(x, nowPos.y, nowPos.z);
if (x < leftLine || x > rightLine)
{
di = -di;
if (changeX)
{
gameObject.transform.localScale = new Vector3(
gameObject.transform.localScale.x * -1,
gameObject.transform.localScale.y, gameObject.transform.localScale.z);
}
}
}
//up ro down
else if (dir == MoveDir.Up || dir == MoveDir.Down)
{
int initDir = dir == MoveDir.Down ? -1 : 1;
float y = nowPos.y + speed * Time.deltaTime * di * initDir;
gameObject.transform.localPosition = new Vector3(nowPos.x, y, nowPos.z);
if (y < downLine || y > upLine)
{
di = -di;
if (changeY)
{
gameObject.transform.localScale = new Vector3(
gameObject.transform.localScale.x,
gameObject.transform.localScale.y * -1, gameObject.transform.localScale.z);
}
}
}
}
}