|
Título: Empujado mientras se aleja más rápido que el empujador ¿por qué? Publicado por: Tachikomaia en 5 Julio 2025, 10:15 am Deberían agregar un ícono de confusión.
Esta es la salida: Caminó a la derecha: 0.5 Caminó a la izquierda: 0 Caminó a la izquierda: -0.5 Caminó a la derecha: 0 Caminó a la derecha: 0.5 Caminó a la izquierda: 0 Caminó a la izquierda: -0.5 Mario empujado mientras caminaba a: -0.5 El EmpujeaDKMario es: 0 Distancia: 60.7 Empuje negativo, no debería ocurrir Mario empujado mientras caminaba a: -0.5 y se repite. Esos mensajes indican la velocidad pixeles por frame, conque Mario se está moviendo, y la distancia respecto a Donkey Kong, que está a su derecha, moviéndose hacia él: Mario <-DK Los mensajes de movimientos son sobre Mario. La velocidad de ambos es 0.5. Así que... voy a poner que la distancia se muestre más seguido, pero no es un error que pueda obtener a voluntad. Distancia: 57.8 Mario empujado mientras caminaba a: 0.5 El EmpujeaDKMario es: 2.93 Moving por ser empujado: -2.43 Caminó a la derecha contra gran empuje: -2.4007 Distancia: 59.75 Mario empujado mientras caminaba a: -2.4007 El EmpujeaDKMario es: -5.569051 Empuje negativo, no debería ocurrir Casi seguro que es cuando presiono izquierda justo antes de que sea empujado o en el mismo momento. No puedo explicar lo que no entiendo, pero quedan tan cerca que hay colisión, cuando Mario caminaba a la derecha, así que es empujado a la izquierda, bastante, no debería haber colisión de nuevo en ese momento, pero hay... ¿por qué? ¿Cómo lo puedo entender más? Viendo mensajes que no puse (son muchas líneas que parecen irrelevantes) veo que con 58.8 no ocurre colisión: Distancia: 59.8 Distancia: 58.8 Distancia: 57.8 Mario empujado mientras caminaba a: 0.5 ...pero en lo que puse antes dice que se detectó a 59.75, o sea, a mayor distancia sí se detectó colisión, no puede ser. Les dejo lo que me parece relevante del código, espero no resumir de más. Ah, un detalle: Cuando Mario es empujado, su velocidad tarda en normalizarse, dependiendo de si camina contra el empuje, si se queda quieto o camina a favor, pero dudo que eso sea la causa del problema, creo que es en la parte de DK. Código
Resumiendo el código acá me di cuenta de que el empuje no es necesariamente negativo, lo dice el if... Puede ser 0, de hecho al inicio dice que es 0, no lo había visto. Pero en la 2nda salida es negativo. El cálculo es: EmpujeaDKMario = (DKSpeed+Player.Moving)*((DKPeso-DKMarioPeso)/100); Supongo que resulta negativo porque Player.Moving es negativo, lo cual como expliqué no sé cómo ocurre en ese momento, parece que a veces se capta una colisión a una distancia menor, pero que yo sepa el tamaño de los dibujos (animados) no varía tanto. ¿Necesitan algo más? O sea, estaba a Distancia 57.8, hubo colisión, fue empujado a la izquierda, caminó a la derecha intentando oponerse, pero estaba a distancia mayor que antes, y aún así se detectó otra colisión. ¿Acaso el caminar se está aplicando luego de que se dice la distancia, antes de terminar el frame? Digo, puede que la salida esté desordenada, chequearé eso. Título: Re: Empujado mientras se aleja más rápido que el empujador ¿por qué? Publicado por: Tachikomaia en 9 Julio 2025, 12:44 pm Puse que se muestre la distancia cuando se Mario se mueve y cuando se realiza el chequeo de colisión y no vi diferencia.
Cancelé es e intenté ver en cámara lenta qué pasa, grabé un video: https://youtu.be/H6G2vK65Kro el error ocurre más o menos en el minuto 1, y vuelve a ocurrir más tarde, aún no vi cuando. En el 1er error se ve como Mario iba a la derecha, fue a la izquierda un momento antes de la colisión, cambió de dirección y colisionó, apareció el daño (2), pero en ese cambio de dirección parece que se detectara una colisión 2 veces: Distancia: 59.4499999999999 Caminó a la derecha: 0 Distancia: 58.9499999999999 Mario empujado mientras caminaba a: 0 El EmpujeaDKMario es: 1.465 Moving por ser empujado: -1.465 Izquierda con empuje: -1.45535 Distancia: 59.9499999999999 Mario empujado mientras caminaba a: -1.45535 El EmpujeaDKMario es: -2.7991755 Empuje negativo, no debería ocurrir Sigo sin saber cual es el error ¿ideas? O sea, fue empujado mientras estaba quieto ("moviéndose a velocidad 0", empezando a caminar a la derecha, canceló caminar a la izquierda, por eso aún no llegó a 0.5, canceló el -0.5), eso lo entiendo, pero como fue empujado a la izquierda, la distancia aumentó y por lo tanto no debería detectar otra colisión! |