Ejemplo n.º 1
0
        // 停止发泡3秒,然后开始切换场景.
        void StartChangeMap()
        {
            if (curMoveWaveState != MoveWaveState.none)
            {
                return;
            }
            // 记录上一次发泡和锁定的状态.
            CanonCtrl.Instance.StopFireAndRecordLastLockState();

            lerpPercent      = 0f;
            curMoveWaveState = MoveWaveState.stopFire;
            // 在第一阶段就禁止玩家发泡(3秒的禁炮才能实现)
            changingWave = true;
        }
Ejemplo n.º 2
0
        // 开始切换场景.
        void ChangeMap()
        {
            // 下一次和上一次图片的id.
            curTexIndex += 1;
            if (curTexIndex >= TexAndGrass.Count)
            {
                curTexIndex = 0;
            }
            if (curTexIndex <= 0)
            {
                lastTexIndex = TexAndGrass.Count - 1;
            }
            else
            {
                lastTexIndex = curTexIndex - 1;
            }

            lerpPercent      = 0f;
            curMoveWaveState = MoveWaveState.moveInViewport;

            // 播放海浪声音.
            waveAudio.Play();

            // 随机播放一个tip.
            Transform _tip = tips[UnityEngine.Random.Range(0, tips.Count)];

            if (_tip != null)
            {
                Quaternion _rot;
                // 如果符合旋转条件,就对tip进行旋转生成.
                if (CanonCtrl.Instance.turn_screen == true && CanonCtrl.Instance.turn_screen_on_of)
                {
                    _rot = new Quaternion(0.0f, 0.0f, 1.0f, 0.0f);
                }
                else
                {
                    _rot = new Quaternion();
                }
                Transform _temp = Factory.Create(_tip, uiCam.ViewportToWorldPoint(tipShowUpViewport), _rot);
                _temp.parent     = tipCache.transform;
                _temp.localScale = Vector3.one;
            }

            // 两张背景图打开.
            ShowTheUsingBGTex(true, true);

            // 通过两张背景图片层级关系决定这次切换背景使用哪一个作为背景.
            if (upObj.GetComponent <UIPanel>().depth > downObj.GetComponent <UIPanel>().depth)
            {
                upObjInUp = true;

                downObj.GetComponent <UIPanel>().depth = -5;
                downPanel.clipOffset = new Vector2(0f, 0f);

                upObj.GetComponent <UIPanel>().depth = 20;
                upPanel.clipOffset = new Vector2(-1500f, 0f);

                upBgTex.mainTexture = TexAndGrass[curTexIndex].tex;
            }
            else
            {
                upObjInUp = false;

                downObj.GetComponent <UIPanel>().depth = 20;
                downPanel.clipOffset = new Vector2(-1500f, 0f);

                upObj.GetComponent <UIPanel>().depth = -5;
                upPanel.clipOffset = new Vector2(0f, 0f);

                downBgTex.mainTexture = TexAndGrass[curTexIndex].tex;
            }
        }
Ejemplo n.º 3
0
        void Update()
        {
//			AjustCam();
            UpdateGrass();


            switch (curMoveWaveState)
            {
            // 停止发泡等待3秒.
            case MoveWaveState.stopFire:
                lerpPercent += Time.deltaTime;
                if (lerpPercent > 3f)
                {
                    lerpPercent = 0f;
                    ChangeMap();
                    curMoveWaveState = MoveWaveState.moveInViewport;
                }
                break;

            // 波浪从 wavePos[0] 移动到 wavePos[1].
            case MoveWaveState.moveInViewport:
                // 1f/0.1f.
                lerpPercent += Time.deltaTime * moveSpeed * 10f;
                if (CanonCtrl.Instance.turn_screen == true && CanonCtrl.Instance.turn_screen_on_of)
                {
                    waveTrans.position = Vector3.Lerp(wavePos[4], wavePos[5], lerpPercent);
                }
                else
                {
                    waveTrans.position = Vector3.Lerp(wavePos[0], wavePos[1], lerpPercent);
                }

                if (lerpPercent >= 1f)
                {
                    lerpPercent      = 0f;
                    curMoveWaveState = MoveWaveState.moveWithMask;
                }
                break;

            // 波浪从 wavePos[1] 移动到 wavePos[2]. 与此同时两个背景图片开始做遮罩.
            case MoveWaveState.moveWithMask:
                lerpPercent += Time.deltaTime * moveSpeed;
                // mask.
                if (upObjInUp)
                {
                    float   _offset = Mathf.Lerp(upOffset.x, upOffset.y, lerpPercent);
                    Vector2 temp    = upPanel.clipOffset;
                    temp.x             = _offset;
                    upPanel.clipOffset = temp;

                    float   _offset2 = Mathf.Lerp(downOffset.x, downOffset.y, lerpPercent);
                    Vector2 temp2    = downPanel.clipOffset;
                    temp2.x = _offset2;
                    downPanel.clipOffset = temp2;
                }
                else
                {
                    float   _offset = Mathf.Lerp(upOffset.x, upOffset.y, lerpPercent);
                    Vector2 temp    = downPanel.clipOffset;
                    temp.x = _offset;
                    downPanel.clipOffset = temp;

                    float   _offset2 = Mathf.Lerp(downOffset.x, downOffset.y, lerpPercent);
                    Vector2 temp2    = upPanel.clipOffset;
                    temp2.x            = _offset2;
                    upPanel.clipOffset = temp2;
                }

                // wave.
                if (CanonCtrl.Instance.turn_screen == true && CanonCtrl.Instance.turn_screen_on_of)
                {
                    waveTrans.position = Vector3.Lerp(wavePos[5], wavePos[6], lerpPercent);
                }
                else
                {
                    waveTrans.position = Vector3.Lerp(wavePos[1], wavePos[2], lerpPercent);
                }

                if (lerpPercent >= 1f)
                {
                    curMoveWaveState = MoveWaveState.moveOutViewport;
                    lerpPercent      = 0f;

                    // record last map fish.
                    FishCtrl.Instance.RecordLastMapFish();
                    ClearLastMapFish();

                    waveAudio.Stop();
                }
                break;

            // 波浪从 wavePos[2] 移动到 wavePos[3].
            case MoveWaveState.moveOutViewport:
                // 1f/0.3f;
                lerpPercent += Time.deltaTime * moveSpeed * 3.33f;
                if (CanonCtrl.Instance.turn_screen == true && CanonCtrl.Instance.turn_screen_on_of)
                {
                    waveTrans.position = Vector3.Lerp(wavePos[6], wavePos[7], lerpPercent);
                }
                else
                {
                    waveTrans.position = Vector3.Lerp(wavePos[2], wavePos[3], lerpPercent);
                }

                if (lerpPercent >= 1f)
                {
                    curMoveWaveState = MoveWaveState.none;
                    ResetSortingLayer();

                    // 移动完了只显示当前使用的背景图.
                    if (upObjInUp)
                    {
                        ShowTheUsingBGTex(true, false);
                    }
                    else
                    {
                        ShowTheUsingBGTex(false, true);
                    }

                    // 播放下一首背景歌曲.
                    AudioCtrl.Instance.NextBG();

                    // 关闭海浪.
                    waveTrans.gameObject.SetActive(false);

                    // 恢复发泡和锁定状态.
                    CanonCtrl.Instance.ResumeFireAndResumeLockState();
                }
                break;
            }
        }