- Home /
Instantiated Enemy to Recognise Array of Waypoints
Dear Coders, I have coded for Waypoints to be Instantiated at random points along my plane :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
public class WaypointManager : MonoBehaviour {
public Transform wayPointManager;
public GameObject wayPoint;
public List<GameObject> wayPoints = new List<GameObject>();
public float timer;
float x;
float y;
float z;
void Start ()
{
wayPoint = GameObject.FindGameObjectWithTag("WayPoint");
wayPoints.Add (wayPoint);
}
void Update (){
x = Random.Range(-500, 500);
y = Random.Range (1, 5);
z = Random.Range(-500, 500);
timer += Time.deltaTime;
if (timer > 1.0f) {
GenerateARandomWayPoint ();
timer = 0f;
}
if (wayPoints == null || wayPoints.Count == 0)
{
wayPoints.Add (GenerateARandomWayPoint());
}
}
public GameObject GenerateARandomWayPoint(){
bool setRelativeToWorld = true;
GameObject clone = Instantiate (wayPoint,wayPointManager,setRelativeToWorld) as GameObject;
//Instantiate (wayPoint,wayPointManager,setRelativeToWorld) as GameObject;
wayPoint.transform.position = new Vector3 (x,y,z);
return clone;
}
}
I am trying to code for instantiated enemies to recognise these waypoints and navigate along the waypoints randomly. I'm having quite a bit of difficulty with this step and the script for enemy waypoint recognition is as follows :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class RandomEnemyWander : MonoBehaviour {
public float timer;
private NavMeshAgent patrol;
public GameObject [] points;
void Start ()
{
patrol = GetComponent<NavMeshAgent> ();
GameObject [] points = GameObject.FindGameObjectsWithTag("WayPoint");
Transform[] wayPoints = new Transform [points.Length];
for (int i = 0; i < points.Length; i++) {
wayPoints [i] = points [i].transform;
}
}
void Update ()
{
wayPointList ();
}
void wayPointList ()
{
GameObject[] points = GameObject.FindGameObjectsWithTag ("WayPoint");
Transform[] wayPoints = new Transform [points.Length];
for (int i = 0; i < points.Length; i++) {
wayPoints [i] = points [i].transform;
}
}
}
So in essence I want the enemy to recognise when a waypoint has been generated and to add this to a list of waypoints that it can randomly follow. Could somebody help? Thanks!
Answer by KittenSnipes · Dec 19, 2017 at 02:06 PM
@ohkayem Well once you have the transforms location it as easy as doing:
patrol.SetDestination(wayPoint.transform.position);
Answer by ohkayem · Dec 19, 2017 at 10:20 PM
I've incorporated this into the code but it doesn't seem to run.
error : The name `wayPoints' does not exist in the current context
Any suggestions?