Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class MoveObject : MonoBehaviour {
private float time;
public float currFrame = 1;
public float n;
private Vector3 From = new Vector3();
private Vector3 To = new Vector3();
private bool start = false;
private int type;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (start && type == 1)
{
float dX = (To.x - From.x);
float dY = (To.y - From.y);
transform.position = new Vector3(From.x + (dX/n)*currFrame ,From.y + (dY/n)*currFrame ,transform.position.z);
currFrame++;
if(Mathf.Abs(transform.position.x - To.x) < 0.01 && Mathf.Abs(transform.position.y - To.y) < 0.01)
{
transform.position = To;
start = false;
GameObject.Destroy(transform.GetComponent<MoveObject>());
}
}
if (start && type == 2)
{
float dX = (To.x - From.x);
float dY = (To.y - From.y);
transform.position = new Vector3(From.x + (dX/n)*currFrame ,From.y + dY*(Mathf.Pow(currFrame/n,3)) ,transform.position.z);
currFrame++;
if(Mathf.Abs(transform.position.x - To.x) < 0.01 && Mathf.Abs(transform.position.y - To.y) < 0.01)
{
transform.position = To;
start = false;
GameObject.Destroy(transform.GetComponent<MoveObject>());
}
}
}
private void Move(Transform T, Vector3 To , float Second)
{
From = T.position;
this.To = To;
n = (int)(Time.timeScale/Time.deltaTime * Second);
start = true;
type = 1;
}
private void MoveCurve(Transform T, Vector3 To , float Second)
{
From = T.position;
this.To = To;
n = (int)(Time.timeScale/Time.deltaTime * Second);
start = true;
type = 2;
}
public static void StartMove(Transform T, Vector3 To , float Second)
{
MoveObject s = T.gameObject.AddComponent ("MoveObject") as MoveObject;
s.Move (T, To, Second);
}
public static void StartMoveCurve(Transform T, Vector3 To , float Second)
{
MoveObject s = T.gameObject.AddComponent ("MoveObject") as MoveObject;
s.MoveCurve (T, To, Second);
}
}
using System.Collections;
public class MoveObject : MonoBehaviour {
private float time;
public float currFrame = 1;
public float n;
private Vector3 From = new Vector3();
private Vector3 To = new Vector3();
private bool start = false;
private int type;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (start && type == 1)
{
float dX = (To.x - From.x);
float dY = (To.y - From.y);
transform.position = new Vector3(From.x + (dX/n)*currFrame ,From.y + (dY/n)*currFrame ,transform.position.z);
currFrame++;
if(Mathf.Abs(transform.position.x - To.x) < 0.01 && Mathf.Abs(transform.position.y - To.y) < 0.01)
{
transform.position = To;
start = false;
GameObject.Destroy(transform.GetComponent<MoveObject>());
}
}
if (start && type == 2)
{
float dX = (To.x - From.x);
float dY = (To.y - From.y);
transform.position = new Vector3(From.x + (dX/n)*currFrame ,From.y + dY*(Mathf.Pow(currFrame/n,3)) ,transform.position.z);
currFrame++;
if(Mathf.Abs(transform.position.x - To.x) < 0.01 && Mathf.Abs(transform.position.y - To.y) < 0.01)
{
transform.position = To;
start = false;
GameObject.Destroy(transform.GetComponent<MoveObject>());
}
}
}
private void Move(Transform T, Vector3 To , float Second)
{
From = T.position;
this.To = To;
n = (int)(Time.timeScale/Time.deltaTime * Second);
start = true;
type = 1;
}
private void MoveCurve(Transform T, Vector3 To , float Second)
{
From = T.position;
this.To = To;
n = (int)(Time.timeScale/Time.deltaTime * Second);
start = true;
type = 2;
}
public static void StartMove(Transform T, Vector3 To , float Second)
{
MoveObject s = T.gameObject.AddComponent ("MoveObject") as MoveObject;
s.Move (T, To, Second);
}
public static void StartMoveCurve(Transform T, Vector3 To , float Second)
{
MoveObject s = T.gameObject.AddComponent ("MoveObject") as MoveObject;
s.MoveCurve (T, To, Second);
}
}
Кидаем класс просто в проект , для использования делаем такие действия
Синтаксис:
Используется csharp
MoveObject.StartMove ( Transform объекта который перемещяем , Vector3 куда добраться , float Время в секундах );
StartMove = Прямолинейное
StartMoveCurve = По дуге .
Надеюсь кому то будет полезен.