Tutorial script inimigo segue e foge do player
Página 1 de 1
Tutorial script inimigo segue e foge do player
Script C #
- Código:
using UnityEngine;
public class EnemyController : MonoBehaviour
{
public Transform player;
public float followSpeed = 5f;
public float fleeSpeed = 8f;
public float fleeDuration = 3f;
private bool isFleeing = false;
private float fleeTimer;
void Update()
{
if (!isFleeing)
{
FollowPlayer();
}
else
{
FleeFromPlayer();
}
}
void FollowPlayer()
{
// Direção do inimigo para o jogador
Vector3 directionToPlayer = player.position - transform.position;
// Rotacionar para olhar na direção do jogador (pode ser ajustado conforme necessário)
transform.rotation = Quaternion.LookRotation(directionToPlayer);
// Mover em direção ao jogador
transform.Translate(directionToPlayer.normalized * followSpeed * Time.deltaTime);
// Exemplo: Iniciar fuga após 5 segundos
if (Time.timeSinceLevelLoad > 5f)
{
StartFlee();
}
}
void FleeFromPlayer()
{
// Direção oposta ao jogador
Vector3 directionAwayFromPlayer = transform.position - player.position;
// Rotacionar para olhar na direção oposta ao jogador
transform.rotation = Quaternion.LookRotation(directionAwayFromPlayer);
// Mover para longe do jogador
transform.Translate(directionAwayFromPlayer.normalized * fleeSpeed * Time.deltaTime);
// Atualizar o temporizador de fuga
fleeTimer -= Time.deltaTime;
// Se o temporizador de fuga atingir zero, voltar a seguir o jogador
if (fleeTimer <= 0f)
{
StopFlee();
}
}
void StartFlee()
{
isFleeing = true;
fleeTimer = fleeDuration;
}
void StopFlee()
{
isFleeing = false;
}
}
- Código:
using UnityEngine;
using UnityEngine.AI;
public class EnemyController : MonoBehaviour
{
public Transform player;
public float followDistance = 5f;
public float fleeDistance = 8f;
public float fleeDuration = 3f;
private NavMeshAgent navMeshAgent;
private bool isFleeing = false;
private float fleeTimer;
void Start()
{
navMeshAgent = GetComponent<NavMeshAgent>();
}
void Update()
{
float distanceToPlayer = Vector3.Distance(transform.position, player.position);
if (!isFleeing && distanceToPlayer < followDistance)
{
FollowPlayer();
}
else if (isFleeing || (isFleeing && distanceToPlayer < fleeDistance))
{
FleeFromPlayer();
}
}
void FollowPlayer()
{
navMeshAgent.SetDestination(player.position);
// Exemplo: Iniciar fuga após 5 segundos
if (Time.timeSinceLevelLoad > 5f)
{
StartFlee();
}
}
void FleeFromPlayer()
{
Vector3 fleeDirection = transform.position - player.position;
Vector3 fleeDestination = transform.position + fleeDirection.normalized * fleeDistance;
navMeshAgent.SetDestination(fleeDestination);
// Atualizar o temporizador de fuga
fleeTimer -= Time.deltaTime;
// Se o temporizador de fuga atingir zero, voltar a seguir o jogador
if (fleeTimer <= 0f)
{
StopFlee();
}
}
void StartFlee()
{
isFleeing = true;
fleeTimer = fleeDuration;
}
void StopFlee()
{
isFleeing = false;
}
}
Tópicos semelhantes
» [TUTORIAL] Inimigo que segue player enquanto player está vendo
» Inimigo apenas segue o player
» [Problema com c#] Inimigo segue o Player
» Inimigo segue o player mesmo morto!!!
» [TUTORIAL] Camera que segue o Player ( estilo GTA )
» Inimigo apenas segue o player
» [Problema com c#] Inimigo segue o Player
» Inimigo segue o player mesmo morto!!!
» [TUTORIAL] Camera que segue o Player ( estilo GTA )
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos