CapersProject/Packages/com.arongranberg.astar/ExampleScenes~/Scenes/OldExamples/Example18_RTS/RTSHarvester.cs

62 lines
1.4 KiB
C#
Raw Normal View History

2024-06-03 18:26:03 +00:00
using UnityEngine;
using System.Collections;
using System.Linq;
using Pathfinding;
using Pathfinding.Examples.RTS;
namespace Pathfinding.Examples.RTS {
[HelpURL("https://arongranberg.com/astar/documentation/stable/rtsharvester.html")]
public class RTSHarvester : MonoBehaviour {
RTSUnit unit;
Animator animator;
void Awake () {
unit = GetComponent<RTSUnit>();
animator = GetComponent<Animator>();
ctx = new BTContext {
animator = animator,
transform = transform,
unit = unit
};
}
BTNode behave;
BTContext ctx;
// Use this for initialization
void Start () {
StartCoroutine(StateMachine());
behave = Behaviors.HarvestBehavior();
}
RTSHarvestableResource FindFreeResource () {
/*var resources = FindObjectsOfType<RTSHarvestableResource>().Where(c => c.reservedBy == null).ToArray();
RTSHarvestableResource closest = null;
var dist = float.PositiveInfinity;
var point = transform.position;
for (int i = 0; i < resources.Length; i++) {
var d = (resources[i].transform.position - point).sqrMagnitude;
if (d < dist) {
dist = d;
closest = resources[i];
}
}
return closest;*/
return null;
}
void OnDestroy () {
behave.Terminate(ctx);
}
IEnumerator StateMachine () {
yield break;
}
// Update is called once per frame
void Update () {
behave.Tick(ctx);
}
}
}