Parcourir la source

狼关卡调整

lvjincheng il y a 4 ans
Parent
commit
571559d972

+ 2 - 2
Assets/BowArrow/Scenes/GameChallengeScene/DayToNight.cs

@@ -27,7 +27,7 @@ public class DayToNight : MonoBehaviour
         RenderSettings.skybox = daySkyboxMaterial;
         foreach (Transform item in transform) item.gameObject.SetActive(false);
         transform.Find("DayElements").gameObject.SetActive(true);
-        SetFogCamera(false);
+        // SetFogCamera(false);
     }
 
     public void EnterNight()
@@ -39,7 +39,7 @@ public class DayToNight : MonoBehaviour
         RenderSettings.skybox = nightSkyboxMaterial;
         foreach (Transform item in transform) item.gameObject.SetActive(false);
         transform.Find("NightElements").gameObject.SetActive(true);
-        SetFogCamera(true);
+        // SetFogCamera(true);
     }
 
     public void SetFogCamera(bool setValue)

+ 5 - 5
Assets/BowArrow/Scenes/GameChallengeScene/GameChallenge.unity

@@ -20378,7 +20378,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 29.344437, y: 0}
+  m_AnchoredPosition: {x: 29.683897, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1047161075
@@ -23699,7 +23699,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 29.344437, y: 0}
+  m_AnchoredPosition: {x: 29.683897, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1203594963
@@ -27768,7 +27768,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &1424121260
 RectTransform:
   m_ObjectHideFlags: 0
@@ -36047,7 +36047,7 @@ Light:
   serializedVersion: 10
   m_Type: 1
   m_Shape: 0
-  m_Color: {r: 0.03426487, g: 0.083038285, b: 0.13207549, a: 1}
+  m_Color: {r: 0.20392157, g: 0.31764707, b: 0.44313726, a: 1}
   m_Intensity: 1.5
   m_Range: 10
   m_SpotAngle: 30
@@ -41883,7 +41883,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 48.688873, y: 0}
+  m_AnchoredPosition: {x: 49.367794, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &2142579590

+ 38 - 31
Assets/BowArrow/Scenes/GameChallengeScene/Wolf.cs

@@ -114,7 +114,7 @@ public class Wolf : TargetAnimal
                 state.lockingTarget = true;
                 needAmbush = false;
             } else {
-                //未锁定目标阶段被击退,因为可能会再次满足z路径条件,因此需要重置Z路径记录
+                //未锁定目标阶段被击退,因为可能会再次满足z路径条件,因此需要重置Z路径记录
                 if (!state.lockingTarget) ResetZPathRecord();
                 CancelLockTarget(1);
                 RunAwayFromHunter();
@@ -360,17 +360,17 @@ public class Wolf : TargetAnimal
     //在敌人身边奔跑徘徊
     void RunAroundHunter(bool quickly) {
         float baseDistance = 10;
-        float baseDistanceMoveRange = 10;
+        float baseDistanceMoveRange = 5;
         Vector3 standardPointer = animalsBaseT.forward;
         Vector3 pointerWithLen = standardPointer.normalized * (baseDistance + Random.value * baseDistanceMoveRange);
-        pointerWithLen = Quaternion.AngleAxis(-40f + Random.value * 80f, Vector3.up) * pointerWithLen;
+        pointerWithLen = Quaternion.AngleAxis(Random.Range(-20f, 23f), Vector3.up) * pointerWithLen;
         Vector3 newPos = animalsBaseT.position + pointerWithLen;
         SetDestination(newPos);
         state.moveSlowly = !quickly;
         state.moveQuickly = quickly;
         agent.speed = quickly ? 5f : 0.8f;
     }
-    //Z字型路径缓慢移动
+    //Z字型路径
     Queue<Vector3> zPathPoints = new Queue<Vector3>();
     bool canCreateZPath = true;
     void ResetZPathRecord() {
@@ -390,38 +390,45 @@ public class Wolf : TargetAnimal
         }
         //构建Z字型路径
         zPathPoints.Clear();
-        Vector3 standardPos = animalsBaseT.forward;
-        Vector3 hunterPos = hunterPosition;
-        Vector3 pointerToMe = GetPointerHunterToMe().normalized;
-        Vector3 pointer1 = Quaternion.AngleAxis(120, Vector3.up) * pointerToMe;
-        Vector3 pointer2 = Quaternion.AngleAxis(-120, Vector3.up) * pointerToMe;
+        Vector3 standardVec = animalsBaseT.forward;
+        Vector3 hunterPos = animalsBaseT.position;
         Vector3 myPos = this.transform.position;
-        int[] pointerSeq = {1, 2, 1};
-        bool isReverse = Random.value < 0.5;
-        foreach (int seqID in pointerSeq)
-        {
-            Vector3 lastMyPos = myPos;
-            if (seqID == 1) myPos = myPos + (isReverse ? pointer2 : pointer1) * 5;
-            if (seqID == 2) myPos = myPos + (isReverse ? pointer1 : pointer2) * 10;
-            hunterPos.y = myPos.y;
-            Vector3 hunterToMe = myPos - hunterPos;
-            float angle = Vector3.Angle(hunterToMe, standardPos);
-            float minDistance = 10;
-            //如果下一个构建的坐标在猎手身后或者距离猎手低于指定距离
-            if (angle > 90 || Vector3.Distance(hunterPos, myPos) < minDistance) {
-                Vector3 hunterToMe2 = lastMyPos - hunterPos;
-                if (hunterToMe2.magnitude > minDistance + 2) {
-                    Vector3 displace = (hunterToMe2).normalized * minDistance;
-                    myPos = hunterPos + displace;
-                    zPathPoints.Enqueue(myPos);
+        float minDistance = 10;
+        float maxDistance = 25;
+        while (true) {
+            myPos.y = hunterPos.y;
+            float distance = Vector3.Distance(myPos, hunterPos);
+            if (distance > minDistance) {
+                Vector3 vecToMyPos = myPos - hunterPos; 
+                //判断位置在猎人左边还是右边
+                float crossY = Vector3.Cross(standardVec, vecToMyPos).y;
+                float nextAngle;
+                if (crossY >= 0) { //在右边
+                    nextAngle = Random.Range(-20f, -10f);//下次就向左边走
+                } else { //在左边
+                    nextAngle = Random.Range(13f, 22f);;//下次就向右边走
                 }
-                canCreateZPath = false;
-                break;
-            } else {
+                float nextDistance = distance - Random.Range(3.5f, 4.5f);
+                if (nextDistance > maxDistance) {
+                    nextDistance = maxDistance;
+                }
+                if (nextDistance < minDistance) {
+                    nextDistance = minDistance;
+                }
+                if (Mathf.Abs(nextDistance - distance) < 1.2f) {
+                    break;
+                }
+                Vector3 displace = (Quaternion.AngleAxis(nextAngle, Vector3.up) * standardVec) * nextDistance;
+                myPos = hunterPos + displace;
                 zPathPoints.Enqueue(myPos);
+                // Debug.Log(Quaternion.AngleAxis(-180f, Vector3.up) * (myPos - hunterPos));
+            } else {
+                break;
             }
         }
-    }
+        canCreateZPath = false;
+    } 
+
     //停留
     void Stay(bool correct = false) {
         if (state.moving || correct) {

+ 3 - 2
Assets/BowArrow/Scenes/GameChallengeScene/WolfHuntGameMode.cs

@@ -90,6 +90,7 @@ public class WolfHuntGameMode : ChallengeGameMode
 
     bool canStartCreateAniaml = false; //等选完关卡才能开始倒计时
     float createAnimalCountDown = 0; //生产动物的倒计时
+    const float createAnimalCountDownDefault = 30;
     public override void Update()
     {
         base.Update();
@@ -97,7 +98,7 @@ public class WolfHuntGameMode : ChallengeGameMode
         if (!gameMgr.gameOver && canStartCreateAniaml) {
             createAnimalCountDown -= Time.deltaTime;
             if (createAnimalCountDown <= 0) {
-                createAnimalCountDown = 30;
+                createAnimalCountDown = createAnimalCountDownDefault;
                 CreateAnimal();
             }
         }
@@ -105,7 +106,7 @@ public class WolfHuntGameMode : ChallengeGameMode
     //当动物死亡后,如果场上没有活着的动物,就立即生成一头狼,并清空生产动物的倒计时
     void CreateAnimalIgnoreAndClearCountDown() {
         if (animalSet.Count == 0) {
-            createAnimalCountDown = 0;
+            createAnimalCountDown = createAnimalCountDownDefault;
             CreateAnimal();
         }
     }

+ 1 - 1
Assets/BowArrow/Scripts/Manager/GameMgr.cs

@@ -8,7 +8,7 @@ using UnityEngine.SceneManagement;
 public class GameMgr : MonoBehaviour
 {
     public static bool debugInEditor = false;
-    public static int gameType = 4;
+    public static int gameType = 5;
     public GameMode gameMode;
     [System.NonSerialized] public bool gameOver = false;
     public static GameMgr ins;