//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, October 09, 2018 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; namespace vnxbqy.UI { public class UIEffectFly:MonoBehaviour { [SerializeField] Transform m_tran1; [SerializeField] Transform m_tran2; [SerializeField] Transform m_tran3; [SerializeField] Transform m_tran4; [SerializeField] Transform m_tran5; [SerializeField] Transform m_tran6; [SerializeField] Transform m_tran7; [SerializeField] Transform m_tran8; [SerializeField] Transform m_tran9; [SerializeField] Transform m_endTran; [Header("需要生成的个数")] public int NUMBER = 5; [Header("移动的时间")] public float SPEED = 2f; [Header("需要进行延迟的时间")] public float LOADTIME = 0.1f; public void StartFly(int Inedx) { switch (Inedx) { case 1: GetVector3Pos(m_tran1.position, m_endTran.position); break; case 2: GetVector3Pos(m_tran2.position, m_endTran.position); break; case 3: GetVector3Pos(m_tran3.position, m_endTran.position); break; case 4: GetVector3Pos(m_tran4.position, m_endTran.position); break; case 5: GetVector3Pos(m_tran5.position, m_endTran.position); break; case 6: GetVector3Pos(m_tran6.position, m_endTran.position); break; case 7: GetVector3Pos(m_tran7.position, m_endTran.position); break; case 8: GetVector3Pos(m_tran8.position, m_endTran.position); break; case 9: GetVector3Pos(m_tran9.position, m_endTran.position); break; } } private void GetVector3Pos(Vector3 StartVec,Vector3 endVec) { var direction = Vector3.Normalize(StartVec - endVec); var normal = new Vector3(-direction.y, direction.x, 0); var distance = Vector3.Distance(StartVec, endVec); int Type = 0; int Type1 = 0; for (int i = 0; i < NUMBER; i++) { var pivot = StartVec + normal * UnityEngine.Random.Range(-distance, distance) * 0.7f + direction * distance * 0.4f; var effect = EffectMgr.Instance.PlayUIEffect(5134,2500, this.transform, true); effect.transform.position = StartVec; var bezierMove = effect.AddMissingComponent(); bezierMove.duration = (SPEED - i * LOADTIME); Type += 1; bezierMove.Begin(StartVec, pivot, endVec, () => { Type1 += 1; effect.Stop(); DestroyObject(bezierMove); if (Type == Type1) { // OnComplet(); } }); } } } }