//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, May 15, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using DG.Tweening;
|
|
namespace vnxbqy.UI
|
{
|
|
public class EffectToFaBaoWin : Window
|
{
|
[SerializeField] UIEffect m_UIEffectFabao;
|
[Header("需要生成的个数")]
|
public int NUMBER = 5;
|
[Header("移动的时间")]
|
public float SPEED = 2f;
|
[Header("需要进行延迟的时间")]
|
public float LOADTIME = 0.1f;
|
[Header("光柱等待播放时间")]
|
public float LightCross = 0.3f;
|
List<UIEffect> effectList = new List<UIEffect>();
|
#region Built-in
|
TaskModel m_TaskModel;
|
TaskModel taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<TaskModel>()); } }
|
public static event Action EffectToFaBaoEvent;
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
}
|
|
protected override void OnAfterOpen()
|
{
|
StartCoroutine("EffectCreateToMove");
|
}
|
|
protected override void OnPreClose()
|
{
|
StopCoroutine("EffectCreateToMove");
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void mButton()
|
{
|
|
}
|
|
IEnumerator EffectCreateToMove()
|
{
|
yield return null;
|
int width = Screen.width / 2;//获取屏幕一般的宽
|
int height = Screen.height / 2;//获取屏幕一般的高
|
SFXPlayUtility.Instance.PlayBattleEffect(5146, taskmodel.UIeffectFabaoVec, Vector3.forward);
|
if (Camera.main == null)
|
{
|
CloseImmediately();
|
yield break;
|
}
|
Vector3 screenPos = Camera.main.WorldToScreenPoint(taskmodel.UIeffectFabaoVec); // 世界坐标转换成屏幕坐标
|
Vector3 screenPos2 = new Vector3(screenPos.x - width, screenPos.y - height, 0);
|
var startPoint = WindowCenter.Instance.uiRoot.baseCanvas.TransformPoint(screenPos2);
|
var endPoint = m_UIEffectFabao.transform.position;
|
var direction = Vector3.Normalize(startPoint - endPoint);
|
var normal = new Vector3(-direction.y, direction.x, 0);
|
var distance = Vector3.Distance(startPoint, endPoint);
|
|
yield return new WaitForSeconds(LightCross);
|
int Type = 0;
|
int Type1 = 0;
|
for (int i = 0; i < NUMBER; i++)
|
{
|
var pivot = startPoint + normal * UnityEngine.Random.Range(-distance, distance) * 0.7f + direction * distance * 0.4f;
|
var effect = EffectMgr.Instance.PlayUIEffect(5134, (int)this.windowInfo.windowType * 1000 + 500,this.transform,true);
|
effect.transform.position = startPoint;
|
var bezierMove = effect.AddMissingComponent<BezierMove>();
|
bezierMove.duration = (SPEED - i * LOADTIME);
|
Type += 1;
|
bezierMove.Begin(startPoint, pivot, endPoint, () =>
|
{
|
Type1 += 1;
|
effect.Stop();
|
DestroyObject(bezierMove);
|
if (Type == Type1)
|
{
|
OnComplet();
|
}
|
|
});
|
}
|
}
|
|
private void OnComplet()
|
{
|
WindowCenter.Instance.Close<EffectToFaBaoWin>();
|
if (EffectToFaBaoEvent != null)
|
{
|
EffectToFaBaoEvent();
|
}
|
}
|
#endregion
|
|
}
|
|
}
|
|
|
|
|