- Home /
Nav Mesh Agent para perseguir a un clon
Estoy tratando de hacer un simulador donde unos animales tendrían que buscar comida para comérsela.
Para hacer que la encuentren y vayan hacia ella, he usado el Nav Mesh Agent pero solo me funciona para perseguir al GameObject original, no para sus clones.
Abajo dejo el código por si sirve de ayuda.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime;
using UnityEngine;
using UnityEngine.AI;
public class AnimalScript : MonoBehaviour
{
public float velocity;
public float aceleracion;
public float angular;
public Transform food;
private NavMeshAgent agente;
void Start()
{
agente = GetComponent<NavMeshAgent>();
agente.speed = velocity;
agente.angularSpeed = angular;
agente.acceleration = aceleracion;
}
void Update()
{
agente.destination = food.position;
}
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Food")
{
Destroy(other.gameObject);
}
}
}
Answer by FeedMyKids1 · Jun 18, 2020 at 12:05 AM
Tienes que 'resetear' food cuando la cloneas.
O sea, la destinacion del agente es siempre la food.position y si no cambia la referencia de 'food', siempre vas hacia esa. Entonces, al hacer otra comida (y su Transform) tienes que marcarla como tarjeta (objectivo).
Algo como
public void SetTarget (Transform target) => food = target;
Al instanciar el clon, llamas a SetTarget y le pasas la transform del clon.
void CreateClone ()
{
Gameobject comidaClon = Instantiate (deliciousFoodPrefab, somewhere, with some rotation) as GameObject;
&AnimalScript.SetTarget (comidaClon.transform);
}
Your answer
Follow this Question
Related Questions
NavMeshPath.corners.length is always 0 1 Answer
Click to Move - get NavMesh Area Name 2 Answers
Unity pathfinding - Comparing 2 paths? 2 Answers
OnTriggerEnter/OnCollisionEnter and 5.0 3 Answers