Bueno, resulta que dentro del programa que estoy preparando necesito girar un sprite mediante la manipulaci?n de la variable image_angle. Este sprite tiene su origen fuera de s? mismo, m?s abajo, y necesito rotarlo en incrementos muy peque?os, del orden de 0.2 grados por step. El problema es que cuando me acerco al valor cero, el giro se detiene moment?neamente y luego da un salto hasta el nuevo ?ngulo (todo esto ocurre gr?ficamente, porque el valor de image_angle s? cambia suavemente). Me parece que es porque el GM aproxima los ?ngulos con valor absoluto menores a 0.5 a 0, produci?ndose este desagradable efecto. Dejo un editable hecho en :GM6: donde se aprecia el problema.
?Alguien tiene una idea de c?mo corregir este efecto visual?
Sinceramente ni idea.
Al principio no entend?a a que te refer?as pero modifique el ejemplo ampli?ndolo y cambiando el evento key por keypressed.
Pues, soluciones, lo que se dice "soluciones" no se me ocurren ninguna. Lo que si, se me ocurren solamente dos ideas locas:
1) reescribir el c?digo de la rotaci?n (cosa que en GM ser? m?s que ineficiente).
2) Jugar con las funciones 3d (las que desconozco) ya que seguramente trabajar con superficies ser? igual.
Lamento no haber aportado algo ?til, un saludo!
m.. yo uso GM7... nose si en GM6 se nota un cambio como dices, pero yo no veo nada, lo veo perfecto...
prueba abrirlo con GM7 y si sigue saliendo el error gr?fico, me avisas y emnpiezo a usar gafas... xD
Como tu has dicho es porque el GM redondea el valor de la variable.
Ademas que como el origen lo tiene fuera entonces el efecto es mucho mas pronunciado.
Voy a investigar yo tambien con el editable =)
Luego edito
EDIT
Estoy con ciberman, yo tambien lo veo perfecto xD
EDIT2
Y no puede ser una terrible variacion de frames causada por alguna cosa extra?a? xD
EDIT3
Por no hacer un post tonto: Killer, loco (lo siento, me he podido resistir) xD
si gira repentinamente solo cuando se aproxima a 0 talves si usas una variable ANGULO y usas dos imagene se solucione, osea la imagen normal y la normal rotada en -180 grados
La variable ANGULO seria el angulo del objeto, pero no nesesariamente de su imagen
si ANGULO esta entre 90 a 270 la imagen normal y image_angulo igual a ANGULO,
si ANGULO esta entre 270-360 o 0-90 la imagen rotada y image_angulo igual ANGULO +180,
Lego cuando gires cambia solo la variable ANGULO no y no el image_angulo o como se llame...
esto aria que el image_angulo varie solo entre 90 y 270
Llamenme loco, pero que tal si simplemente se evita que image_angle se aproxime a 0. Simplemente en el evento que se use para disminuir image_angle se agrega algo como esto:
if image_angle<10 image_angle+=360;
Bueno, primero gracias por las respuestas. No voy a cambiar al modo 3D para esto, ser?a desastroso si part? trabajando en 2D. No puedo probarlo en GM7 pero sospecho que deber?a ocurrir lo mismo a menos que se haya corregido este bug (porque eso es). No es una variaci?n de frames, ?stos permanecen iguales. Tampoco puedo darme el lujo de tener 2 im?genes de lo mismo. Sin embargo, logr? solucionar el problema y me acabo de encontrar con que Killer tambi?n dio en el clavo: sumar 360 al ?ngulo cuando se acerque a cero. Como sospechaba, ocurre por un asunto de redondeo del ?ngulo a cero cuando se acerca a dicho valor; no ocurre ni con 90, 180, 270, 360 ni ning?n otro ?ngulo, s?lo con cero. Seguramente es porque don Mark Overmars pens? que cuando le damos un ?ngulo peque?ito queremos decir que el sprite est? "derecho" y lo asume como cero. Como me pasa con ?ngulos cuyo m?dulo es menor a 1?, voy a sumarle 360? si baja de este valor.