Como fazer um sistema de waypoints com espera.
2 participantes
Página 1 de 1
Como fazer um sistema de waypoints com espera.
Como posso fazer pra um obj ir até um local especifico, ficar por 30 segundos e em seguida ir para outro.
Exemplo: andar até o ponto A, ficar 30 segundos, Andar até o ponto B, ficar 30 segundos, até o C... e repetir esse percurso sempre.
Exemplo: andar até o ponto A, ficar 30 segundos, Andar até o ponto B, ficar 30 segundos, até o C... e repetir esse percurso sempre.
Mozinhas2- Membro
- PONTOS : 923
REPUTAÇÃO : 11
Idade : 21
Áreas de atuação : Unity, Blender
Respeito as regras :
Re: Como fazer um sistema de waypoints com espera.
Jovem, quando criar um tópico, tente dar um título que descreva sua dúvida, coisas como "C#", "Ajuda c#", dificultam a pesquisa, caso outra pessoa tenha uma dúvida parecida, ela nunca vai achar seu tópico.
O título será alterado.
Isso aqui você coloca num objeto vazio que vai marcar os pontos por onde o personagem vai andar:
Você define o tempo de espera e coloca ali no array "Destinos" ou outros pontos que você pode ir a partir do ponto atual, então quando o personagem chegar aí, ele pode ir pra mais de um lugar aleatoriamente.
O personagem anda, e quando chega perto do ponto, ele espera o tempo que você definir no ponto, depois sorteia o próximo ponto e anda até ele.
O título será alterado.
Isso aqui você coloca num objeto vazio que vai marcar os pontos por onde o personagem vai andar:
- Código:
using UnityEngine;
public class Ponto : MonoBehaviour
{
public Ponto[] destinos;
public float tempoEspera = 0;
}
Você define o tempo de espera e coloca ali no array "Destinos" ou outros pontos que você pode ir a partir do ponto atual, então quando o personagem chegar aí, ele pode ir pra mais de um lugar aleatoriamente.
O personagem anda, e quando chega perto do ponto, ele espera o tempo que você definir no ponto, depois sorteia o próximo ponto e anda até ele.
- Código:
using System.Collections;
using UnityEngine;
public class IA : MonoBehaviour
{
public Ponto pontoAtual;
public float velocidade = 1;
private float esperaAtual;
private void Start()
{
StartCoroutine(nameof(Andar));
}
private IEnumerator Esperar()
{
yield return new WaitForSeconds(esperaAtual);
StartCoroutine(nameof(Andar));
}
private IEnumerator Andar()
{
while (Vector3.Distance(transform.position, pontoAtual.transform.position) > 0.1f)
{
transform.position = Vector3.MoveTowards(transform.position, pontoAtual.transform.position, velocidade * Time.deltaTime);
yield return null;
}
esperaAtual = pontoAtual.tempoEspera;
pontoAtual = pontoAtual.destinos[Random.Range(0, pontoAtual.destinos.Length)];
StartCoroutine(nameof(Esperar));
}
}
Fagner- Moderador
-
PONTOS : 3905
REPUTAÇÃO : 665
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :

» Como fazer Sistema Dia e Noite Segui o sistema de Hora
» Alguém poderia fazer uma aula de como criar um sistema de fazer o personagem trocar de equipamento?
» como fazer um sistema de construçao de base? (como se fosse o do rust)
» Sistema De Paraquedas Em C#, Como Fazer?
» Como fazer um sistema multiplayer?
» Alguém poderia fazer uma aula de como criar um sistema de fazer o personagem trocar de equipamento?
» como fazer um sistema de construçao de base? (como se fosse o do rust)
» Sistema De Paraquedas Em C#, Como Fazer?
» Como fazer um sistema multiplayer?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos