123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using UnityEngine;
- using System.Collections;
- /// <summary>
- ///
- /// </summary>
- public class Test2DMove : MonoBehaviour
- {
- /// <summary>
- ///
- /// </summary>
- private Vector3 mStart = Vector3.zero;
- /// <summary>
- ///
- /// </summary>
- private Vector3 mEnd = Vector3.zero;
- /// <summary>
- ///
- /// </summary>
- Vector3 center = Vector3.zero;
- /// <summary>
- ///
- /// </summary>
- Vector3 riseRelCenter;
- /// <summary>
- ///
- /// </summary>
- Vector3 setRelCenter;
- /// <summary>
- ///
- /// </summary>
- public float mSpeed = 0.01f;
- /// <summary>
- ///
- /// </summary>
- public bool IsOver = false;
- /// <summary>
- ///
- /// </summary>
- float mFloat = 0;
- public Transform startOjb = null;
- public Transform endOjb = null;
- void Start()
- {
- Init(startOjb.transform.position, endOjb.transform.position);
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="start"></param>
- /// <param name="end"></param>
- public void Init(Vector3 start, Vector3 end)
- {
- this.mStart = start;
- this.mEnd = end;
- // 弧线的中心
- center = (mStart + mEnd) * 0.5f;
- // 向下移动中心,垂直于弧线
- center += new Vector3(3.5f, 0, 0);
- riseRelCenter = start - center;
- setRelCenter = end - center;
- IsOver = true;
- }
- void Update()
- {
- if (IsOver)
- {
- //transform.LookAt(mEnd);
- mFloat += Time.deltaTime * mSpeed;
- // 相对于中心在弧线上插值
- transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, mFloat);
- transform.position += center;
- if (transform.position == mEnd)
- {
- IsOver = false;
- //Destroy(gameObject);
- }
- }
- }
-
- }
|