From 8722a9920c1f6119bf6e769cba270e63097f8e25 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 23 May 2024 10:08:29 +0800 Subject: + astar project --- .../ExampleScenes/ExampleScripts/DoorController.cs | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/DoorController.cs (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/DoorController.cs') diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/DoorController.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/DoorController.cs new file mode 100644 index 0000000..7056294 --- /dev/null +++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/DoorController.cs @@ -0,0 +1,59 @@ +using UnityEngine; + +namespace Pathfinding.Examples { + /// Example script used in the example scenes + [HelpURL("https://arongranberg.com/astar/documentation/stable/doorcontroller.html")] + public class DoorController : MonoBehaviour { + private bool open = false; + + public PathfindingTag opentag = 1; + public PathfindingTag closedtag = 1; + public bool updateGraphsWithGUO = true; + public float yOffset = 5; + + Bounds bounds; + + public void Start () { + // Capture the bounds of the collider while it is closed + bounds = GetComponent().bounds; + + // Initially open the door + SetState(open); + } + + void OnGUI () { + // Show a UI button for opening and closing the door + if (GUI.Button(new Rect(5, yOffset, 100, 22), "Toggle Door")) { + SetState(!open); + } + } + + public void SetState (bool open) { + this.open = open; + + if (updateGraphsWithGUO) { + // Update the graph below the door + // Set the tag of the nodes below the door + // To something indicating that the door is open or closed + GraphUpdateObject guo = new GraphUpdateObject(bounds); + var tag = open ? opentag : closedtag; + + // There are only 32 tags + if (tag > 31) { Debug.LogError("tag > 31"); return; } + + guo.modifyTag = true; + guo.setTag = tag; + guo.updatePhysics = false; + + AstarPath.active.UpdateGraphs(guo); + } + + // Play door animations + if (open) { + GetComponent().Play("Open"); + } else { + GetComponent().Play("Close"); + } + } + } +} -- cgit v1.1-26-g67d0