No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creación de Spawnpoints de enemigos

20/41
Recursos

Aportes 5

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

<h3>Para los que no les guste el comportamiento del enemigo que va con mayor velocidad al inicio de su recorrido, podemos usar la funcion:</h3>
Vector3.MoveTowards()

La cual e ocupa de la siguiente manera:

        transform.position = Vector3.MoveTowards(transform.position, _player.position, velocity * Time.deltaTime);

Lo cual nos dara el vector resultante para que nuestro objeto llegue hasta su destino.
Primer parametro :Posición actual del objeto que queremos mover(En este caso transform.position del script enemy)
Segundo parametro: Posición a la cual deseamos mover el objeto(En este caso la posición del player)
Tercer Parametro: Distancia a recorrer por frame(En este caso, la velocidad por el tiempo de cada frame, ya que se ejecuta en el Update)

Con Unity tenemos el objeto random, al que podemos utilizar para las elecciones aleatorias, y definimos un rango de elecciones, con el método Range(start, finish).

Crear posiciones aleatorias al rededor del jugador:

// Asignamos la distancia a la que deben aparecer los enemigos del jugador (Radio)
[SerializeField] float startDistanceToEnemy = 5f;
// En el método Start, mandamos a llamar la función que generara la posicion
void Start() {
	// Find Player Object
	player = FindObjectOfType<Player>().transform;    
	// Llamar función para asignar posición 
	SetRandomPosition();
}

// Asignar posición al rededor del jugador
 private void SetRandomPosition() {
	// Generamos la posicion X al azar 
	// (entre 0 y la distancia que queremos que aparezca el enemigo)
	float x = Random.Range(0, startDistanceToEnemy);
	//  Dado que X, puede ser cualquier número entre 0 y startDistanceToEnemy 
	// (en este caso 5), debemos calcular la posición y, para asegurarnos 
// que se encuentre a una distancia constante
	// Se usa una formula matemática Y^2 = R^2 – X^2 
        float y = Mathf.Pow(Mathf.Pow(startDistanceToEnemy, 2) - Mathf.Pow(x, 2), .5f);
	// Random para saber si lo haremos positivo o negativo
        int leftOrRight = Random.Range(0, 2);
	// Generamos el vector para la posición del enemigo
        Vector3 positionEnemy = new Vector3(x, y, 0);
	
	// Evaluamos si será positivo o negativo y asignamos la posición 
        if (leftOrRight == 0)
            transform.position = player.position + positionEnemy;
        else
            transform.position = player.position - positionEnemy;
}

Genial

muy buena clase bien explicado