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
stopCon 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.