diff options
author | chai <215380520@qq.com> | 2024-05-23 10:08:29 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-05-23 10:08:29 +0800 |
commit | 8722a9920c1f6119bf6e769cba270e63097f8e25 (patch) | |
tree | 2eaf9865de7fb1404546de4a4296553d8f68cc3b /Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/Scenes/LocalAvoidance/RVOAgentPlacer.cs | |
parent | 3ba4020b69e5971bb0df7ee08b31d10ea4d01937 (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.cs | 57 |
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); + } + } +} |