Create AIPrototype.cs
This commit is contained in:
parent
caf6006c9e
commit
b0054d62c6
|
@ -0,0 +1,53 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using SHADE;
|
||||||
|
|
||||||
|
public class AIPrototype : Script
|
||||||
|
{
|
||||||
|
//This object's relevant components
|
||||||
|
private Transform transform;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("The list of waypoints that the object will move around on")]
|
||||||
|
private Vector3[] waypoints;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
[Tooltip("How fast the object moves about waypoints")]
|
||||||
|
private float moveSpeed;
|
||||||
|
|
||||||
|
//To cycle depending on the length of waypoints
|
||||||
|
private int currentTargetWaypointIndex;
|
||||||
|
|
||||||
|
public AIPrototype(GameObject gameObj) : base(gameObj) { }
|
||||||
|
|
||||||
|
protected override void awake()
|
||||||
|
{
|
||||||
|
transform = GetComponent<Transform>();
|
||||||
|
if (transform == null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Transform is NULL!");
|
||||||
|
}
|
||||||
|
|
||||||
|
currentTargetWaypointIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void update()
|
||||||
|
{
|
||||||
|
//Head towards the next target
|
||||||
|
transform.GlobalPosition += (waypoints[currentTargetWaypointIndex] - transform.GlobalPosition) * moveSpeed * (float)Time.DeltaTime;
|
||||||
|
|
||||||
|
//Cycle to next waypoint if near enough
|
||||||
|
if ((waypoints[currentTargetWaypointIndex] - transform.GlobalPosition).GetSqrMagnitude() < 1.0f)
|
||||||
|
{
|
||||||
|
++currentTargetWaypointIndex;
|
||||||
|
if (currentTargetWaypointIndex == waypoints.Length)
|
||||||
|
{
|
||||||
|
currentTargetWaypointIndex = 0; //Recycle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue