SZAND\msx_2 6 月之前
父節點
當前提交
ef5d8477aa

+ 3 - 17
ActionTowerDefense/Assets/Resources/Prefab/Player.prefab

@@ -766,7 +766,6 @@ MonoBehaviour:
   injuryNumText: {fileID: 6467251191553420251, guid: 9b37289f93ea76745ab2cefb79a93e3c, type: 3}
   showInjuryNum: 1
   canFly: 0
-  armor: 0
   ls: {fileID: 0}
   isInSoulTower: 0
   beLarger: 0
@@ -793,20 +792,9 @@ MonoBehaviour:
   minFlyHeight: 0
   flyUpTime: 0
   isAdjustHeight: 0
-  totalBeRepelValue: 100
-  beRepelValue: 0
-  weakTime: 0
-  totalWeakTime: 0.5
-  newTotalWeakTime: 0
-  weakHitRate: 2
-  easyToGetHit: 0.2
   isDamageReduction: 0
   reductionDegree: 0
   reductionEffect: {fileID: 0}
-  decelerationRatio: 1
-  comaTime: 5
-  pastComaTime: 0
-  floatTime: 5
   effect: {fileID: 0}
   soulPrefab: {fileID: 0}
   soulStartSpeed: 1
@@ -824,7 +812,6 @@ MonoBehaviour:
   playerId: 0
   pos: {x: 140, y: 0}
   canJump: 1
-  endTranSummon: 1
   aniCollider: {fileID: 5072770566235913242}
   uiMp: {fileID: 8465211090008398057}
   soulCollector: {fileID: 3739918129319493242}
@@ -856,8 +843,6 @@ MonoBehaviour:
   cacheRushTime: 0
   totalCacheRushTime: 0.1
   sprintCostMp: 20
-  cachePullRopeTime: 0
-  totalCachePullRopeTime: 0.1
   jumpSpeed: 20
   airJumpSpeed: 14
   airJumped: 0
@@ -1149,6 +1134,7 @@ MonoBehaviour:
     BlowUp: 0
     ShotDown: 0
     Stun: 0
+    armor: 0
   decelerationRatioX: 2
   decelerationRatioY: 15
   floatingState: 0
@@ -1460,7 +1446,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!4 &8708596147765169231
 Transform:
   m_ObjectHideFlags: 0
@@ -1503,6 +1489,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   owner: {fileID: 0}
   attackerID: 0
+  curX: 0
 --- !u!1 &5747259993936315763
 GameObject:
   m_ObjectHideFlags: 0
@@ -1836,7 +1823,6 @@ MonoBehaviour:
       rate: 0
     sustainedInjury:
       damage: 0
-  damage: 0
   force: {x: 0, y: 0, z: 0}
   changeHurt: 0
   repelValue: 0

+ 2 - 2
ActionTowerDefense/Assets/Scripts/CameraController.cs

@@ -233,8 +233,8 @@ public class CameraController : MonoBehaviour
             }
             if(Time.timeScale == 1)
             {
-                mainCamera.transform.position =
-                Vector3.Lerp(mainCamera.transform.position, targetPos, lerpValue * Time.deltaTime);
+                mainCamera.transform.localPosition =
+                Vector3.Lerp(mainCamera.transform.localPosition, targetPos, lerpValue * Time.deltaTime);
             }
             
         }

+ 32 - 5
ActionTowerDefense/Assets/Scripts/Characters/BeHitTrigger.cs

@@ -9,22 +9,49 @@ public class BeHitTrigger : MonoBehaviour
     public Character owner;
     public int attackerID;      //攻击方
 
+    [Header("当前X值(攻击值-抗击打值)")]
+    [DisplayOnly]
+    public int curX;
+    private int freezeFrame;
+    [HideInInspector]
+    public bool isFreeze;
+    private RigidbodyConstraints origRC;
+
     private void Awake()
     {
         owner = GetComponentInParent<Character>();
     }
 
-    private void OnTriggerEnter(Collider other)
-    {
-        
-    }
-
     public void BeHit(int damage)
     {
         owner.BeHit(damage);
     }
+
     public void BeHit(AttackInfo attackInfo,float dir)
     {
         owner.BeHit(attackInfo,dir);
     }
+
+    public void FreezeFrame(int frame)
+    {
+        isFreeze = true;
+        freezeFrame = frame;
+        owner.ani.speed = 0;
+        origRC = owner.rb.constraints;
+        owner.rb.constraints = RigidbodyConstraints.FreezeAll;
+    }
+
+    private void Update()
+    { 
+        if (isFreeze)
+        {
+            if (freezeFrame <= 0)
+            {
+                isFreeze = false;
+                owner.ani.speed = 1;
+                owner.rb.constraints = origRC;
+            }
+            freezeFrame -= 1;
+        }
+    }
 }

+ 0 - 2
ActionTowerDefense/Assets/Scripts/Characters/Demonic.cs

@@ -13,7 +13,6 @@ public class Demonic : MoveCharacter
     public float costMp = 10;
     public bool isBack = false;         //Íù·´·½Ïò×ß
     public int baseSortingOrder;
-    int sortingOrder = 0;
     public float runSpeed;
     public float summonTime;
 
@@ -594,7 +593,6 @@ public class Demonic : MoveCharacter
             default:
                 break;
         }
-        CharacterState oldState = state;
         state = newState;
         switch (newState)
         {

+ 2 - 2
ActionTowerDefense/Assets/Scripts/Characters/MoveCharacter.cs

@@ -151,7 +151,7 @@ public class MoveCharacter : Character
         if (beLarger)
         {
             Enlarge();
-        }
+        }/*
         if (isInvisible)
         {
             invisibleTime -= Time.deltaTime;
@@ -169,7 +169,7 @@ public class MoveCharacter : Character
                 haveTransmit = false;
                 portalsController.rbs.Remove(rb);
             }
-        }
+        }*/
         //Êܵ½³ÖÐøÉ˺¦
         if (isSustainedInjury)
         {

+ 1 - 1
ActionTowerDefense/Assets/Scripts/Characters/PlayerController.cs

@@ -416,7 +416,7 @@ public class PlayerController : MoveCharacter
         fixedDeltaTime = Time.fixedDeltaTime;
     }
 
-    private void Update()
+    override public void Update()
     {
         if (LBisHold)
         {

+ 62 - 0
ActionTowerDefense/Assets/Scripts/SystemReflect/ScreenReflectPresets.cs

@@ -0,0 +1,62 @@
+using Sirenix.OdinInspector;
+using System.Collections.Generic;
+using UnityEngine;
+
+public enum ScreenReflectEffects
+{
+    screenShake = 0,        //ÆÁÄ»Õð¶¯
+    freezeFrame = 1,        //¶ÙÖ¡
+    stun = 2,               //Ó²Ö±
+}
+
+public class ScreenReflectPresets : MonoBehaviour
+{
+    [System.Serializable]
+    public struct ScreenReflects
+    {
+        public ScreenReflectEffects effect;
+        [ShowIf("effect", ScreenReflectEffects.screenShake)]
+        public int level;
+        [ShowIf("effect", ScreenReflectEffects.freezeFrame)]
+        public int frame;
+        [ShowIf("effect", ScreenReflectEffects.stun)]
+        public float time;
+    }
+
+    [System.Serializable]
+    public struct ScreenReflectInfo
+    {
+        public int minX;
+        public List<ScreenReflects> effects;
+    }
+
+    public ScreenShake screenShake;
+
+    public List<ScreenReflectInfo> reflectPresets;
+
+    public void ScreenReflect(BeHitTrigger beHitter, int x)
+    {
+        foreach(ScreenReflectInfo sri in reflectPresets)
+        {
+            if (x >= sri.minX)
+            {
+                foreach(ScreenReflects sr in sri.effects)
+                {
+                    switch (sr.effect)
+                    {
+                        case ScreenReflectEffects.screenShake:
+                            screenShake.ShakeScreen(sr.level);
+                            break;
+                        case ScreenReflectEffects.freezeFrame:
+                            beHitter.FreezeFrame(sr.frame);
+                            break;
+                        case ScreenReflectEffects.stun:
+                            //Ó²Ö±
+                            break;
+                    }
+                }
+                break;
+            }
+        }
+    }
+}

+ 11 - 0
ActionTowerDefense/Assets/Scripts/SystemReflect/ScreenReflectPresets.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 70f2d921afca2114fa05eb21271c32b6
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 21 - 10
ActionTowerDefense/Assets/Scripts/SystemReflect/ScreenShake.cs

@@ -1,5 +1,6 @@
 using System.Collections;
 using System.Collections.Generic;
+using UnityEditor;
 using UnityEngine;
 using UnityEngine.UI;
 
@@ -8,6 +9,10 @@ public class ScreenShake : MonoBehaviour
 	[Header("摄像机")]
     public Camera mainCam;
 
+	[Header("预览")]
+	public int previewLevel;
+	public bool isPreview;
+
 	[System.Serializable]
 	public struct ShakePos
     {
@@ -26,15 +31,15 @@ public class ScreenShake : MonoBehaviour
 		public List<ShakePos> shakePoses;
     }
 
-    private bool isShakeCamera;
+	[Header("震动预设")]
     public List<ShakeInfo> shakeInfos;
+	private bool isShakeCamera;
 
 	//当前震动信息
 	private List<ShakePos> shakePoses;
 
-	private float shakeFrame; 
-	private int curGameFrame;
-	private int pastGameFrame;
+	private float shakeFrame;
+	private float pastFrame;
 
 	private void SetCurShakeInfo(int level)
     {
@@ -46,31 +51,37 @@ public class ScreenShake : MonoBehaviour
     {
 		SetCurShakeInfo(level);
 		isShakeCamera = true;
-		curGameFrame = Time.frameCount;
     }
 
     void Update()
 	{
+		if (isPreview)
+		{
+			isPreview = false;
+			SetCurShakeInfo(previewLevel);
+			isShakeCamera = true;
+		}
 		if (isShakeCamera)
 		{
-			if (pastGameFrame > shakeFrame)
+			if (pastFrame > shakeFrame)
 			{
 				isShakeCamera = false;
-				mainCam.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
+				transform.position = Vector2.zero;
+				pastFrame = 0;
 			}
 			else
 			{
 				foreach (ShakePos sp in shakePoses)
                 {
-                    if (pastGameFrame >= sp.shakeFrame)
+                    if (pastFrame == sp.shakeFrame)
                     {
 						float x = sp.camPos.x;
 						float y = sp.camPos.y;
-						mainCam.rect = new Rect(x, y, 1.0f, 1.0f);
+						transform.position = new Vector2(x, y);
 					}
                 }
             }
-			pastGameFrame = Time.frameCount - curGameFrame;
+			pastFrame += 1;
 		}
 	}
 }