Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 51,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
Megadok

Orbitar alrededor de objeto en 2d

Recommended Posts

Hola! Tengo una nave 2d en mi juego Top view y me gustaría añadirle un drone ayudante, que orbitara ("Hiciera círculos" ) alrededor de mi nave. Me gustaría que el drone no deformara su orbita cuando la nave se mueva.

 

¿Alguna idea?

Share this post


Link to post
Share on other sites

Utiliza el seno del tiempo, esto te va a dar valores del -1 al 1. Entonces el drone ya se podría mover de izquierda a derecha. El resultado lo multiplicas por la distancia que quieras que haya entre tu nave y el drone. Repite lo mismo con el coseno del tiempo pero el resultado lo aplicas al eje vertical.

Esto te va a dar la posición con respecto al origen del mundo, o sea, siempre va estar alrededor de (0, 0). Para que vaya alrededor de tu nave solamente sumas la posición de la nave a la posición que calculaste del drone.

No puedo probarlo ahora mismo pero sería algo así:

public Transform nave;
public float distancia = 5f;

private void Update() {
  	// Sin retorna un valor entre -1 y 1 a medida que el tiempo avanza
	var x = Mathf.Sin(Time.time);
  	// Igual el coseno. Ambas funciones juntas forman un circulo
  	var y = Mathf.Cos(Time.time);
 	
  	// No sé que ejes estás usando pero suponiendo que es un top-down literal
  	// "X" y "Z" serían los ejes
  	// Esta posición estaría entre [(-1, -1); (1, 1)]
  	var nuevaPosicion = new Vector3(x, 0, y);
  	
  	nuevaPosicion *= distancia;
  	// Le sumamos la posición de la nave para que este alrededor de ella
  	nuevaPosicion += nave.position;
}

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

×