summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-23 10:08:29 +0800
committerchai <215380520@qq.com>2024-05-23 10:08:29 +0800
commit8722a9920c1f6119bf6e769cba270e63097f8e25 (patch)
tree2eaf9865de7fb1404546de4a4296553d8f68cc3b /Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs
parent3ba4020b69e5971bb0df7ee08b31d10ea4d01937 (diff)
+ astar project
Diffstat (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs')
-rw-r--r--Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs57
1 files changed, 57 insertions, 0 deletions
diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs
new file mode 100644
index 0000000..03dbedd
--- /dev/null
+++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs
@@ -0,0 +1,57 @@
+using UnityEngine;
+using System.Collections;
+
+namespace Pathfinding.Examples {
+ /// <summary>
+ /// Places ROV agents in circles.
+ /// Used in a example scene
+ /// </summary>
+ [HelpURL("https://arongranberg.com/astar/documentation/stable/rvoagentplacer.html")]
+ public class RVOAgentPlacer : MonoBehaviour {
+ public int agents = 100;
+
+ public float ringSize = 100;
+ public LayerMask mask;
+
+ public GameObject prefab;
+
+ public Vector3 goalOffset;
+
+ public float repathRate = 1;
+
+ // Use this for initialization
+ IEnumerator Start () {
+ yield return null;
+
+ for (int i = 0; i < agents; i++) {
+ float angle = ((float)i / agents)*(float)System.Math.PI*2;
+
+ Vector3 pos = new Vector3((float)System.Math.Cos(angle), 0, (float)System.Math.Sin(angle))*ringSize;
+ Vector3 antipodal = -pos + goalOffset;
+
+ GameObject go = GameObject.Instantiate(prefab, Vector3.zero, Quaternion.Euler(0, angle+180, 0)) as GameObject;
+ RVOExampleAgent ag = go.GetComponent<RVOExampleAgent>();
+
+ if (ag == null) {
+ Debug.LogError("Prefab does not have an RVOExampleAgent component attached");
+ yield break;
+ }
+
+ //ag.radius = radius;
+ go.transform.parent = transform;
+ go.transform.position = pos;
+
+ ag.repathRate = repathRate;
+ ag.SetTarget(antipodal);
+
+ ag.SetColor(GetColor(angle));
+ }
+ }
+
+ const float rad2Deg = 360.0f/ ((float)System.Math.PI*2);
+
+ public Color GetColor (float angle) {
+ return AstarMath.HSVToRGB(angle * rad2Deg, 0.8f, 0.6f);
+ }
+ }
+}