DarwinBotsManual
Abrir la app EnglishEN

Choques y golpes

Las sysvars que avisan que el bot chocó con otro, y de qué lado: el sentido del tacto.

DirecciónSysvarTipoResumen
201.hitSentidoVale 1 en el ciclo siguiente a un choque con otro bot o con un obstáculo, venga de donde venga.
205.hitupSentidoVale 1 en el ciclo siguiente a un choque de frente, con algo que estaba delante del bot.
206.hitdnSentidoVale 1 en el ciclo siguiente a un choque por detrás, con algo que el bot tenía a la espalda.
207.hitdxSentidoVale 1 en el ciclo siguiente a un choque por el costado derecho del bot.
208.hitsxSentidoVale 1 en el ciclo siguiente a un choque por el costado izquierdo del bot.
221.hitangLibreUna sysvar que existe solo de nombre: el motor nunca la escribe, así que funciona como memoria libre.

Los ojos ven a la distancia; estas sysvars son el tacto. Cuando el bot se superpone con otro bot (vivo, vegetal o cadáver) o con un obstáculo, el motor enciende .hit y, además, una de las cuatro direcciones según de qué lado vino el contacto: .hitup de frente, .hitdn por detrás, .hitdx por la derecha y .hitsx por la izquierda, siempre respecto de hacia dónde apunta el bot (.aim). Todas valen 1 o 0.

Las cinco siguen la regla de los sentidos con un ciclo de atraso: el motor las escribe en el paso de física, después de que corrió el ADN, tu ADN las lee en el ciclo siguiente, y justo después se borran. Un choque se ve, entonces, durante un único ciclo. El borde del mundo no cuenta como choque: para eso está .edge.

Un choque también llena las sysvars ref* con los datos del bot tocado, como si lo hubiera visto (ver Lo que se ve (ref*)). Si en ese momento el bot no ve nada con sus ojos, los ref* del ciclo siguiente describen al que lo chocó, aunque estuviera detrás.

La forma más común de usarlas es girar hacia el lado del golpe para mirar qué fue. Este bot se da vuelta cuando lo tocan por detrás:

cond
*.hitdn 0 !=
start
628 .aimsx store
stop

.hitang completa el grupo solo de nombre: el motor nunca la escribe.