chenxin
2020-12-04 81be72a35f9e7b247f6c5f79931ed910986ce274
禁锢泡泡上升效果
9 files modified
14972 ■■■■■ changed files
Assets/00000/package/Materials/Object_067.mat 2 ●●● patch | view | raw | blame | history
Assets/00000/package/Materials/Object_068.mat 2 ●●● patch | view | raw | blame | history
Assets/00000/package/Prefab/Prefab/Effect_UI_LianXuDianJi.prefab 6 ●●●● patch | view | raw | blame | history
Assets/Materials/UI/tileTowerVSMat.mat 2 ●●● patch | view | raw | blame | history
Assets/Resources/Prefabs/Endless/BondageBubbleTap.prefab 14809 ●●●●● patch | view | raw | blame | history
Assets/Resources/Prefabs/Endless/BondageBubbleTap.prefab.meta 2 ●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Tower.cs 139 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EndlessBossSkill/BossSkillBondageBubble.cs 4 ●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs 6 ●●●● patch | view | raw | blame | history
Assets/00000/package/Materials/Object_067.mat
@@ -7,7 +7,7 @@
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: "\u8FDE\u7EED\u70B9\u51FB"
  m_Name: Object_067
  m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
  m_ShaderKeywords: 
  m_LightmapFlags: 4
Assets/00000/package/Materials/Object_068.mat
@@ -7,7 +7,7 @@
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: "\u8FDE\u7EED\u70B9\u51FB1"
  m_Name: Object_068
  m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
  m_ShaderKeywords: 
  m_LightmapFlags: 4
Assets/00000/package/Prefab/Prefab/Effect_UI_LianXuDianJi.prefab
@@ -48,7 +48,7 @@
  ringBufferLoopRange: {x: 0, y: 1}
  looping: 1
  prewarm: 0
  playOnAwake: 1
  playOnAwake: 0
  useUnscaledTime: 0
  autoRandomSeed: 1
  useRigidbodyForVelocity: 1
@@ -4963,7 +4963,7 @@
  ringBufferLoopRange: {x: 0, y: 1}
  looping: 1
  prewarm: 0
  playOnAwake: 1
  playOnAwake: 0
  useUnscaledTime: 0
  autoRandomSeed: 1
  useRigidbodyForVelocity: 1
@@ -9880,7 +9880,7 @@
  ringBufferLoopRange: {x: 0, y: 1}
  looping: 1
  prewarm: 0
  playOnAwake: 1
  playOnAwake: 0
  useUnscaledTime: 0
  autoRandomSeed: 1
  useRigidbodyForVelocity: 1
Assets/Materials/UI/tileTowerVSMat.mat
@@ -40,7 +40,7 @@
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 2800000, guid: ea2ffef66c52dd14fbd46187be79f107, type: 3}
        m_Texture: {fileID: 2800000, guid: 8c9a3d26120e78f40aa4ef9ed23d573c, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
Assets/Resources/Prefabs/Endless/BondageBubbleTap.prefab
Diff too large
Assets/Resources/Prefabs/Endless/BondageBubbleTap.prefab.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 382f43d68c7e0ce408b4b171e9750ea5
guid: 181eafb8f02821a4a9cc08dffa1c8db4
PrefabImporter:
  externalObjects: {}
  userData: 
Assets/Scripts/TowerDefense/Towers/Tower.cs
@@ -1,6 +1,4 @@
using UnityEngine.UI;
using DG.Tweening;
using KTGMGemClient;
using KTGMGemClient;
using System;
using ActionGameFramework.Health;
using Core.Utilities;
@@ -10,6 +8,8 @@
using TowerDefense.UI.HUD;
using UnityEngine;
using TowerDefense.Agents;
using System.Collections;
using System.Collections.Generic;
namespace TowerDefense.Towers
{
@@ -189,16 +189,94 @@
        /// </summary>
        public int BondageTapCount { get; private set; }
        /// <summary>
        /// 泡泡上升高度
        /// </summary>
        private float yAdd = 10f;
        /// <summary>
        /// 原始y值
        /// </summary>
        private float originY;
        /// <summary>
        /// 是否开始禁锢
        /// </summary>
        public bool IsStartBondage { get; set; }
        private float bombDuration = 0.7f;
        private float bombTime;
        /// <summary>
        /// 爆炸是否结束
        /// </summary>
        private bool isBombCompleted;
        private void Start()
        {
            originY = transform.position.y;
            promptDic = new Dictionary<string, bool>();
        }
        private void Update()
        {
            HandleBondageBubble();
        }
        private static Dictionary<string, bool> promptDic;
        /// <summary>
        /// 处理禁锢泡泡技能
        /// </summary>
        private void HandleBondageBubble()
        {
            if (IsStartBondage)
            {
                if (isBondage)
                {
                    if (transform.position.y < yAdd + originY && bondageObj != null)
                    {
                        // 上升状态
                        Vector3 pos = transform.position;
                        pos.y += 28f * Time.deltaTime;
                        transform.position = pos;
                        pos = bondageObj.transform.position;
                        pos.y += 28f * Time.deltaTime;
                        bondageObj.transform.position = pos;
                    }
                }
                else
                {
                    if (!isBombCompleted)
                    {
                        bombTime += Time.deltaTime;
                        if (bombTime > bombDuration)
                        {
                            // 爆炸结束开始下降
                            isBombCompleted = true;
                        }
                    }
                    else
                    {
                        if (transform.position.y > originY)
                        {
                            // 下降状态
                            Vector3 pos = transform.position;
                            pos.y -= 55f * Time.deltaTime;
                            transform.position = pos;
                        }
                        else
                        {
                            // 下降结束
                            IsStartBondage = false;
                        }
                    }
                }
            }
            if (!IsBondage) return;
            if (BondageWarningTime > 0)
@@ -244,44 +322,46 @@
        /// </summary>
        private void ShowTapPrompt()
        {
            string key = $"{gridPosition.x}";
            if (promptDic.ContainsKey(key)) return;
            promptDic.Add(key, true);
            GameObject prefab = Resources.Load<GameObject>("Prefabs/Endless/BondageBubbleTap");
            tapObj = Instantiate(prefab);
            tapObj.transform.SetParent(GameObject.Find("MainUI/CoinPanel").transform, false);
            Vector3 worldPos = TowerPlacementGridEndless.instance.GetGridWorldPos(gridPosition.x, gridPosition.y);
            Camera camera = GameObject.Find("SceneCamera3D").GetComponent<Camera>();
            Vector3 screenPos = camera.WorldToScreenPoint(worldPos);
            screenPos.z = 0;
            screenPos.x += 100;
            screenPos.y += 85;
            tapObj.transform.position = screenPos;
            tapObj.transform.localScale = new Vector3(0.6f, 0.6f, 0.6f);
            DOTween.To(() => tapObj.transform.localScale, (Vector3 v) => tapObj.transform.localScale = v, new Vector3(1f, 1f, 1f), 0.3f).SetEase(Ease.OutBack);
            tapObj.transform.SetParent(TowerPlacementGridEndless.instance.GridContainer.transform, false);
            Vector3 worldPos = TowerPlacementGridEndless.instance.GetGridWorldPos(gridPosition.x, 3);
            ParticleSystem ps = tapObj.transform.GetChild(0).GetComponent<ParticleSystem>();
            tapObj.transform.position = worldPos;
            Vector3 pos = tapObj.transform.position;
            pos.x += 5.8f;
            pos.z += 3f;
            pos.y = 13f;
            tapObj.transform.position = pos;
            ps?.Play();
        }
        private void HideTapPrompt()
        {
            if (tapObj != null)
            {
                Image img = tapObj.GetComponent<Image>();
                DOTween.To(() => img.color, (Color v) => img.color = v, new Color(1f, 1f, 1f, 0f), 0.3f).OnComplete(() =>
                {
                    if (tapObj != null)
                    {
                        Destroy(tapObj);
                        tapObj = null;
                    }
                });
                ParticleSystem ps = tapObj.transform.GetChild(0).GetComponent<ParticleSystem>();
                ps?.Stop();
                Destroy(tapObj);
                tapObj = null;
                string key = $"{gridPosition.x}";
                if (promptDic.ContainsKey(key))
                    promptDic.Remove(key);
            }
        }
        public void OnPressed()
        {
            if (!IsBondage || BondageWarningTime > 0) return;
            if (!IsStartBondage || BondageWarningTime > 0) return;
            ++BondageTapCount;
            if (BondageTapCount == 1)
            if (BondageTapCount >= 3)
                HideTapPrompt();
            BondageTime -= BondageClickDecreaseTime;
        }
@@ -294,7 +374,7 @@
            GameObject prefab = Resources.Load<GameObject>("Prefabs/Endless/BondageBubbleBomb");
            GameObject obj = Instantiate(prefab);
            obj.transform.SetParent(TowerPlacementGridEndless.instance.GridContainer.transform, false);
            obj.transform.position = TowerPlacementGridEndless.instance.GetGridWorldPos(gridPosition.x, gridPosition.y);
            obj.transform.position = transform.position;
            obj.transform.GetChild(0).GetComponent<ParticleSystem>().Play();
            Destroy(obj, 1.2f);
        }
@@ -304,11 +384,16 @@
        /// </summary>
        private void StartBondage()
        {
            bombTime = 0;
            BondageTapCount = 0;
            isBombCompleted = false;
            GameObject prefab = Resources.Load<GameObject>("Prefabs/Endless/BondageBubble");
            bondageObj = Instantiate(prefab);
            bondageObj.transform.SetParent(TowerPlacementGridEndless.instance.GridContainer.transform, false);
            bondageObj.transform.position = TowerPlacementGridEndless.instance.GetGridWorldPos(gridPosition.x, gridPosition.y);
            bondageObj.transform.position = transform.position;
            Vector3 pos = bondageObj.transform.position;
            pos.y += gridPosition.y == 3 ? 2f : 1f;
            bondageObj.transform.position = pos;
            bondageObj.transform.GetChild(0).GetComponent<ParticleSystem>().Play();
        }
Assets/Scripts/TowerDefense/UI/EndlessBossSkill/BossSkillBondageBubble.cs
@@ -76,6 +76,7 @@
                    if (tower != null && !tower.IsBondage)
                    {
                        tower.IsBondage = true;
                        tower.IsStartBondage = true;
                        tower.BondageTime = SkillData.effect[0];
                        tower.BondageClickDecreaseTime = SkillData.effect[1];
                        tower.BondageWarningTime = BondageTime;
@@ -101,6 +102,7 @@
                    if (tower != null && !tower.IsBondage)
                    {
                        tower.IsBondage = true;
                        tower.IsStartBondage = true;
                        tower.BondageTime = SkillData.effect[0];
                        tower.BondageClickDecreaseTime = SkillData.effect[1];
                        tower.BondageWarningTime = BondageTime;
@@ -133,6 +135,7 @@
                {
                    int random = UnityEngine.Random.Range(0, towerList.Count);
                    towerList[random].IsBondage = true;
                    towerList[random].IsStartBondage = true;
                    towerList[random].BondageTime = SkillData.effect[0];
                    towerList[random].BondageClickDecreaseTime = SkillData.effect[1];
                    towerList[random].BondageWarningTime = BondageTime;
@@ -173,6 +176,7 @@
                if (tower != null)
                {
                    tower.IsBondage = true;
                    tower.IsStartBondage = true;
                    tower.BondageTime = SkillData.effect[0];
                    tower.BondageClickDecreaseTime = SkillData.effect[1];
                    tower.BondageWarningTime = BondageTime;
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -685,7 +685,7 @@
                Tower sTower = PickTowerInGrid(pointer);
                // 泡泡禁锢状态不允许合并
                if (sTower && sTower.IsBondage) return false;
                if (sTower && sTower.IsStartBondage) return false;
                if (sTower && sTower != towerToMove)
                {
@@ -712,7 +712,7 @@
                Tower sTower = PickTowerInGrid(pointer);
                // 泡泡禁锢状态不允许置换
                if (sTower && sTower.IsBondage) return false;
                if (sTower && sTower.IsStartBondage) return false;
                if (sTower && sTower != towerToMove)
                {
@@ -2223,7 +2223,7 @@
            if (controller != null)
            {
                // 泡泡禁锢状态不允许拖动
                if (controller.IsBondage) return;
                if (controller.IsStartBondage) return;
                SelectTower(controller);
            }