Quellcode durchsuchen

狼跑回去时,路径重合

lvjincheng vor 4 Jahren
Ursprung
Commit
779274a035

+ 169 - 3
Assets/BowArrow/Scenes/GameChallengeScene/GameChallenge.unity

@@ -12326,6 +12326,88 @@ Transform:
   m_Father: {fileID: 204606193}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: -0.00000035945789, y: 0.0000021116407, z: -43.149357}
+--- !u!1 &557734454
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 557734455}
+  - component: {fileID: 557734457}
+  - component: {fileID: 557734456}
+  m_Layer: 0
+  m_Name: RunBackPoint1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &557734455
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 557734454}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 6.4, y: 0, z: 10.46}
+  m_LocalScale: {x: 1.2, y: 0.1, z: 1.2}
+  m_Children: []
+  m_Father: {fileID: 720035913}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &557734456
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 557734454}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &557734457
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 557734454}
+  m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!1001 &560096029
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -16017,6 +16099,8 @@ Transform:
   m_Children:
   - {fileID: 278234152}
   - {fileID: 697121821}
+  - {fileID: 1237237195}
+  - {fileID: 557734455}
   m_Father: {fileID: 279869869}
   m_RootOrder: 12
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -21049,7 +21133,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.483395, y: 0}
+  m_AnchoredPosition: {x: 29.30295, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1047161075
@@ -24370,7 +24454,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.483395, y: 0}
+  m_AnchoredPosition: {x: 29.30295, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1203594963
@@ -25094,6 +25178,88 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1236676282}
   m_CullTransparentMesh: 1
+--- !u!1 &1237237194
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1237237195}
+  - component: {fileID: 1237237197}
+  - component: {fileID: 1237237196}
+  m_Layer: 0
+  m_Name: RunBackPoint0
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &1237237195
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1237237194}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -5.98, y: 0, z: 11.51}
+  m_LocalScale: {x: 1.2, y: 0.1, z: 1.2}
+  m_Children: []
+  m_Father: {fileID: 720035913}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1237237196
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1237237194}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1237237197
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1237237194}
+  m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!1 &1239867539 stripped
 GameObject:
   m_CorrespondingSourceObject: {fileID: 185584, guid: 4dfddad9384f3b147a26480b512e4d85, type: 3}
@@ -42637,7 +42803,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.96679, y: 0}
+  m_AnchoredPosition: {x: 48.6059, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &2142579590

+ 9 - 0
Assets/BowArrow/Scenes/GameChallengeScene/WoldActGird/WolfActGrid.cs

@@ -97,6 +97,15 @@ public class WolfActGrid : MonoBehaviour
         transform.Find(name).GetComponent<MeshRenderer>().material = occupy ? sphereMaterials[1] : sphereMaterials[0]; 
     }
 
+
+    //提供给狼的接口,扑击结束后,跑回的地点
+    int runBackPointIndex = -1;
+    public Vector3 GetRunBackPointAfterPounce() {
+        if (runBackPointIndex == -1) runBackPointIndex = Random.Range(0, 2);
+        runBackPointIndex++;
+        return this.transform.Find("RunBackPoint" + (runBackPointIndex % 2)).position;
+    }
+
     public class AreaMatrix {
         public List<List<Vector3>> posMatrix = new List<List<Vector3>>();
         //格式:"行_列"

+ 21 - 9
Assets/BowArrow/Scenes/GameChallengeScene/Wolf.cs

@@ -133,9 +133,14 @@ public class Wolf : TargetAnimal
         state.ResetActionState();
         state.moving = true;
         this.agent.isStopped = false;
-        bool occupySuccess = WolfActGrid.ins.areaMatrix.occupyPos(pos, this);
-        if (!occupySuccess) {
-            pos = transform.position;
+        if (useRunbackPoint) {
+            useRunbackPoint = false;
+            WolfActGrid.ins.areaMatrix.releaseOccupy(this);
+        } else {
+            bool occupySuccess = WolfActGrid.ins.areaMatrix.occupyPos(pos, this);
+            if (!occupySuccess) {
+                pos = transform.position;
+            }
         }
         this.agent.destination = pos;
     }
@@ -200,6 +205,7 @@ public class Wolf : TargetAnimal
                 }
                 if (needRunAroundCount > 0) {
                     needRunAroundCount--;
+                    useRunbackPoint = !hasRunAround;
                     RunAroundHunter(!hasRunAround);
                     hasRunAround = true;
                     return;
@@ -368,13 +374,19 @@ public class Wolf : TargetAnimal
         agent.speed = quickly ? 5f : 0.8f;
     }
     //在敌人身边奔跑徘徊
+    bool useRunbackPoint = false;
     void RunAroundHunter(bool quickly) {
-        float baseDistance = 10;
-        float baseDistanceMoveRange = 5;
-        Vector3 standardPointer = animalsBaseT.forward;
-        Vector3 pointerWithLen = standardPointer.normalized * (baseDistance + Random.value * baseDistanceMoveRange);
-        pointerWithLen = Quaternion.AngleAxis(Random.Range(-20f, 23f), Vector3.up) * pointerWithLen;
-        Vector3 newPos = animalsBaseT.position + pointerWithLen;
+        Vector3 newPos;
+        if (useRunbackPoint) {
+            newPos = WolfActGrid.ins.GetRunBackPointAfterPounce();
+        } else {
+            float baseDistance = 10;
+            float baseDistanceMoveRange = 5;
+            Vector3 standardPointer = animalsBaseT.forward;
+            Vector3 pointerWithLen = standardPointer.normalized * (baseDistance + Random.value * baseDistanceMoveRange);
+            pointerWithLen = Quaternion.AngleAxis(Random.Range(-20f, 23f), Vector3.up) * pointerWithLen;
+            newPos = animalsBaseT.position + pointerWithLen;
+        }
         SetDestination(newPos);
         state.moveSlowly = !quickly;
         state.moveQuickly = quickly;