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 :-\
anda a la edicion del sprite y pone en el "centro" (center) del mismo el punto de rotacion.
Me había olvidado de aclarar eso, ya lo habia puesto en el centro, de ahí viene ese sprite_width/2
¿En qué evento estás cambiando el image_xscale?
En el step, para que no tengan que hacer preguntas dejo el editable :-[
EDIT: Aprieta espacio para ir a esa room
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.
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=20Segú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
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
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
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?
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)
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/).