Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Mgbu en Abril 10, 2012, 10:46:50 PM

Título: Problemas con image_xscale=-1
Publicado por: Mgbu en Abril 10, 2012, 10:46:50 PM
Para mi juego de plataformas quería usar image_xscale=-1 para hacer que el personaje mire para el otro lado ahorrando sprites, pero da erroes con las coordenadas es muy raro

Yo necesito que chequee colisiones en una posicion, exactamente es
x+sprite_width/2+velocidad*2

Para cuando mira para el otro lado cambié los + por -
x-sprite_width/2-velocidad*2

Pero chequea en posiciones equivocadas cuando uso image_xscale=-1, acá pueden ver una imagen, en donde dibujo un punto en x-sprite_width/2-(velocidad*2). Con el robot mirando hacia cada unos de los lados

(https://public.bay.livefilestore.com/y1pjUQ3uC-FnuVp5v07AbenOPRlUo_rx3o0Xg0AYGBjDQk8YM8tURwZcn46gB2GgIuvH0hLtd8nFOQdXuRB7eOLpg/Sin%20t%C3%ADtulo%201.png?psid=1)
Ahí se logran ver los dos puntitos, el que mira a la derecha dibuja en la posicion que quiero, el de la izquierda no.


Lo extraño es que si al image_xscale lo cambio en el evento draw, con un draw_sprite_ext funciona todo normalmente, pero yo no quiero hacer un eventro draw a todos los enemigos :-\
Título: Re:Problemas con image_xscale=-1
Publicado por: romon_28 en Abril 11, 2012, 12:27:57 AM
anda a la edicion del sprite y pone en el "centro" (center) del mismo el punto de rotacion.
Título: Re:Problemas con image_xscale=-1
Publicado por: Mgbu en Abril 11, 2012, 12:48:17 AM
Me había olvidado de aclarar eso, ya lo habia puesto en el centro, de ahí viene ese sprite_width/2
Título: Re:Problemas con image_xscale=-1
Publicado por: Wadk en Abril 11, 2012, 11:24:33 PM
¿En qué evento estás cambiando el image_xscale?
Título: Re:Problemas con image_xscale=-1
Publicado por: Mgbu en Abril 11, 2012, 11:33:36 PM
En el step, para que no tengan que hacer preguntas dejo el editable :-[
EDIT: Aprieta espacio para ir a esa room
Título: Re:Problemas con image_xscale=-1
Publicado por: elviskelley en Abril 12, 2012, 03:56:17 AM
No vi el editable pero el error esta aca x-sprite_width/2-velocidad*2, ya que lo que haces es la siguiente relacion matematica. 0-spr/2=16-sp*2=0.  mejoralo asi.
var c;
c=(sprite_width/2+velocidad*2)
y las colisiones asi.
x+c
x-c
listo.
Título: Re:Problemas con image_xscale=-1
Publicado por: Mgbu en Abril 12, 2012, 07:03:52 PM
No cambia en nada :-\
Me parece que es lo mismo que habia puesto, pero funciona igual, o sea quedo:
Citarc=(sprite_width/2+velocidad*2)
draw_circle(x-c,y,2,0)

No entendí esto:
Cita de: elviskelley en Abril 12, 2012, 03:56:17 AM
lo que haces es la siguiente relacion matematica. 0-spr/2=16-sp*2=0.
Me parece que sería así:
Si x=0, sp=2
0-spr/2=-16
-16-2*2=20


Según se la multiplicación y división tienen más prioridad que suma y resta, por eso se hacen antes y no haría falta poner parentesis en ese codigo
Título: Re:Problemas con image_xscale=-1
Publicado por: ferhand en Abril 12, 2012, 10:26:13 PM
Amigo Mgbu:

  Me llevo tu editable para la casa, allá lo revisaré con calma.  :D

  Tengo una idea de por qué no se dibuja el círculo siempre igual. Digo eso es lo que quieres, ¿no?   :-[

  No diré nada aun hasta no estar seguro.  ;)

  Gracias por la atención prestada y disculpen las molestias causadas.  :D 
Título: Re:Problemas con image_xscale=-1
Publicado por: Mgbu en Abril 12, 2012, 10:45:30 PM
El problema no es donde se dibuja el punto, si no donde chequea las colisiones
Para representar donde chequea las colisiones dibujo un punto en el lugar, que como ven no esta bien

Ahí hice más representativa la imagen
Título: Re:Problemas con image_xscale=-1
Publicado por: Wadk en Abril 12, 2012, 11:10:51 PM
No vi el editable (no tengo windows) pero creo que el problema es que cuando xscale vale -1, el valor de sprite_width se invierte (repito, creo).
Intentá dibujar el punto (y verificar la colisión) en x-(sprite_width/2)*image_xscale-(velocidad*2).

Por cierto, cuando mencionás esto:
Cita de: Mgbu en Abril 10, 2012, 10:46:50 PM
Lo extraño es que si al image_xscale lo cambio en el evento draw, con un draw_sprite_ext funciona todo normalmente, pero yo no quiero hacer un eventro draw a todos los enemigos :-\
Al hacer esa prueba, ¿realmente cambiás el image_xscale o simplemente ponés -1 en el argumento xscale de draw_sprite_ext?
Título: Re:Problemas con image_xscale=-1
Publicado por: Mgbu en Abril 13, 2012, 01:33:45 AM
Perfecto! tenías razón :D, ya estaba empezando a pensar que el error estaba en alguna otra cosa que había escrito XD

Moraleja: Cuando usás image_xscale=-1 el sprite_width de torna negativo

Cita de: Wadk en Abril 12, 2012, 11:10:51 PM
Por cierto, cuando mencionás esto:
Cita de: Mgbu en Abril 10, 2012, 10:46:50 PM
Lo extraño es que si al image_xscale lo cambio en el evento draw, con un draw_sprite_ext funciona todo normalmente, pero yo no quiero hacer un eventro draw a todos los enemigos :-\
Al hacer esa prueba, ¿realmente cambiás el image_xscale o simplemente ponés -1 en el argumento xscale de draw_sprite_ext?
Sí, solo ponía -1 en el argumento xscale :P

PD: Seguís programando en GM? veo que te fuiste para el lado del software libre :P (o tenes la suerte de tener una Mac)
Título: Re:Problemas con image_xscale=-1
Publicado por: Wadk en Abril 14, 2012, 04:15:56 AM
Me alegro de haber ayudado :).

Cita de: Mgbu en Abril 13, 2012, 01:33:45 AM
PD: Seguís programando en GM? veo que te fuiste para el lado del software libre :P (o tenes la suerte de tener una Mac)
No, hace mucho que no programo en GM. Dejé de usar Windows cuando probé Linux por el tema de la licencia y porque me gustó mucho más. Nunca probé Mac. Actualmente uso Arch (http://www.archlinux.org/).