OneAlive-毒圈设计

 
 
/***
 * OneAlive 放逐勇士
 * 控制层
 * 时间控制脚本
 * 控制毒圈的刷新时间以及毒圈的缩小和刷新(demo)
 * 何张强
 * 2018.3.19 第一次创建
 *
 ***/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.DOTweenEditor;
using DG.Tweening;

public class TimerControl : MonoBehaviour {
   
    public Text StageText;                                 //目前是第几个圈
    public Text TimeingText;                               //倒计时
    public float[] LimitTime;                              //数组:每一圈的限制时间
    public int Stage;                                      //目前所属的阶段,第几个圈
    public bool IsArrive;                                  //判断毒圈是否到达
    public float Timeing;                                  //倒计时,时间等于毒圈限制时间
    private float mRadius ;                                //毒圈的半径
    private float mCircleX;                                //毒圈的位置X
    private float mCircleZ;                                //毒圈的位置Y
    public GameObject CirclePrefab;                        //毒圈的预制品                                                                       
    private GameObject Safetyzone;                         //安全区
    public float ShrinkTime=10f;                           //缩毒时间
    void Start () {
        Stage = 0;
        Timeing = LimitTime[Stage];
        IsArrive = true;
        mRadius = 35;
        //mRadius = 0.5f * mRadius;
        //mCircleX = Random.Range(-0.2f * mRadius, 0.2f * mRadius);
        //mCircleZ = Random.Range(-0.2f * mRadius, 0.2f * mRadius);
        mCircleX = -5f;
        mCircleZ = 5f;
    }
	void Update () {
        if (IsArrive)
        {
            TimeingText.text = "还有" + Timeing + "刷毒";
            StageText.text = "目前是第" + Stage+1 + "圈";
                      

                Timeing -= Time.deltaTime;
                if (Timeing <= 0)
                {
                    Timeing = 0;
                    ElectricCircleMove();
                    Stage++;
                    IsArrive = false;

                }
           
            
            
        }
	}
    /// <summary>
    ///协程用来等待毒圈到位后重新倒计时
    /// </summary>
    /// <returns></returns>
    IEnumerator StartNextTime()
    {
        yield return new WaitForSeconds(ShrinkTime);
        StartNextElectricCircle();
    }
   
    /// <summary>
    /// 开始下一个毒圈
    /// </summary>
    public void StartNextElectricCircle()
    {
        IsArrive = true;
        print(Stage);
        print(LimitTime .Length);
        Timeing = LimitTime[Stage];
    }
    /// <summary>
    /// 毒圈缩小方法
    /// </summary>
    public void ElectricCircleMove()
    {
        // mRadius = 0.5f * mRadius;
        //mcirclex = random.range(-0.2f * mradius, 0.2f * mradius);
        //mcirclez = random.range(-0.2f * mradius, 0.2f * mradius);
        CircleCenter();
        SafetyzoneMove(mRadius, mCircleX, mCircleZ);
        CirclePrefab.transform.DOMove(new Vector3(mCircleX, 0, mCircleZ), ShrinkTime);
        CirclePrefab.transform.DOScaleX(mRadius, ShrinkTime);
        CirclePrefab.transform.DOScaleZ(mRadius, ShrinkTime);

        if(Stage < LimitTime .Length-1)
        {
            StartCoroutine(StartNextTime());
        }
    }
    /// <summary>
    /// 安全区的移动方法
    /// </summary>
    /// <param name="radius">半径</param>
    /// <param name="circleX">安全区的圆心X坐标</param>
    /// <param name="circleY">安全区的圆心Y坐标</param>
    public void SafetyzoneMove(float radius,float circleX,float circleY)
    {        
        
            Safetyzone = Instantiate(CirclePrefab, new Vector3(circleX, 0, circleY), Quaternion.identity);   
            Safetyzone.transform.DOMove(new Vector3(circleX, 0, circleY), 0.1f);
            Safetyzone.transform.DOScaleX(radius, 0.1f);
            Safetyzone.transform.DOScaleZ(radius, 0.1f);
           
    }
    /// <summary>
    /// 圆心坐标及半径的算法
    /// </summary>
    public void CircleCenter()
    {
        mRadius = 0.5f * mRadius;
        mCircleX = Random.Range(mCircleX - 0.2f*mRadius, mCircleX +0.2f* mRadius);
        mCircleZ = Random.Range(mCircleZ - 0.2f*mRadius, mCircleZ +0.2f* mRadius);

    }
}


猜你喜欢

转载自blog.csdn.net/qq_35711014/article/details/79615774
今日推荐