DarwinBotsManual
Abrir la app EnglishEN

angle

Da el ángulo desde el bot hasta un punto x y, en las mismas unidades que .aim: listo para guardarlo en .setaim.

Datos

Palabra
angle
Familia
Avanzados
Pila entera
saca 2, pone 1
Qué hace
Saca un punto (x abajo, y arriba) y apila el ángulo desde el bot hasta él, en unidades de .aim (0 a unos 1256).
Costo
Comando avanzado; debugint y debugbool no cuestan
Se ejecuta en
dentro de un gen: en la condición (cond) y en el cuerpo (start o else)

x y angle saca un punto (primero la x, arriba la y) y apila el ángulo en que hay que mirar para ir desde el bot hasta ahí. El resultado está en las unidades de .aim: de 0 a unos 1256, con 0 hacia la derecha, 314 hacia arriba, 628 hacia la izquierda y 942 hacia abajo.

Las coordenadas son las mismas que dan .xpos, .ypos, .refxpos y .refypos, así que el uso típico es apuntar hacia lo que se está viendo y guardar el resultado en .setaim. Es lo que hace 4-d Swarmer, del Bestiario, en su gen para girar hacia las plantas; simplificado, queda así:

cond
  *.eye5 0 >
start
  *.refxpos *.refypos angle .setaim store
  10 .up store
stop

Con un punto fijo también sirve: 3000 2500 angle .setaim store apunta hacia (3000, 2500) desde donde esté el bot.

Fijate que el ángulo se calcula desde la posición actual del bot, pero las lecturas como *.refxpos llegan con un ciclo de atraso; si el otro se mueve rápido, apuntás a donde estaba. Para saber cuánto falta girar desde el rumbo actual, combinalo con anglecmp; para la distancia hasta el mismo punto, dist.