62 lines
1.4 KiB
C#
62 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|