Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: carlosanomaly en Febrero 04, 2011, 11:33:24 PM

Título: problema con el eje z d3d
Publicado por: carlosanomaly en Febrero 04, 2011, 11:33:24 PM
bien tengo este codigo que saque de un ejemplo.
[gml]
pitch-=(window_mouse_get_y()-240)/5
direction-=(window_mouse_get_x()-320)/5
window_mouse_set(320,240)
if pitch>89
pitch=89
if pitch<-89
pitch=-89
[/gml]
todo perfecto en evento up tengo:
[gml]
speed=10
zspeed=(10*pitch/90)
[/gml]
como ven mi intecion es poder "volar" y segun el pitch moderar la velocidad en z, todas las variables estan declaradas, ese no es el problema, mi problemas es que no pasa absolutamente nada, es decir sigo pegado al floor, como hago esto que tengo pensado, o como lo harian, deantemano gracias.

ah otra cosa, segun yo se el pitch es un angulo de inclinacion de la camara no? si me equivoco haganmelo saber
Título: Re: problema con el eje z d3d
Publicado por: Ge en Febrero 05, 2011, 12:35:03 AM
zspeed, no existe ni de casualidad  :-[

Si tu idea es poder volar, creo entender que queres algo similar al Noclip del Half-Life, o algo parecido a las camaras de espectadores moviles, de algunos juegos multiplayer (Donde si se mira para arriba, y se camina hacia delante se va ganando cada vez mas altura). Al menos eso entendi:
(Avisame si estoy perdido  XD)

en un script llamado Move:
el argumento 0, controla el movimiento del eje Z, por lo general la altura. Por ejemplo, para mover un objeto para arriba, seria nesesario Move(90,0,speed). Aca se coloca el Pith, que es la inclinacion de la camara respecto a la pocision del eje Y del mouse.
el argumento 1, controla el movimiento de los ejes X e Y, en un juego de carrera, por ejemplo, Move(0,direction,speed)
el argumento 2, es quien controla la velocidad de todos los ejes
[gml]
x+=sin(argument1)*cos(argument0)*argument2;
y+=cos(argument1)*cos(argument0)*argument2;
z-=sin(argument0)*argument2;[/gml]

en el evento Create:
[gml]x = 0;
y = 0;
z = 0;
pitch= 0;[/gml]

en el evento Step:
[gml]pitch -=(window_mouse_get_y()-240)/5;
direction-=(window_mouse_get_x()-320)/5;
window_mouse_set(320,240);
if pitch>89
pitch=89;
if pitch<-89
pitch=-89;

if(keyboard_check(ord("A")))
    Move(0,direction-90,Velocidad);

if(keyboard_check(ord("D")))
    Move(0,direction+90,Velocidad);

if(keyboard_check(ord("W")))
    Move(pitch,direction,Velocidad);

if(keyboard_check(ord("S")))
    Move(pitch*-1,direction,Velocidad);

[/gml]

En algunos casos, en donde se pone direction, es necesario sumar +90 o restar -90, tambien 180, tambien podes probar multiplicando por -1. Esto depende de como tengas configurada la camara y que orientacion tenga
Recorda, es para hacer una camara voladora. Al menos eso te entendi. Si no es lo que querias. Solamente decime.  :-[

Nos vemos !  XD
Título: Re: problema con el eje z d3d
Publicado por: carlosanomaly en Febrero 05, 2011, 10:00:33 PM
hay un problema, ya puse la funcion que dijiste y no funciono, hace unos movimientos extra?os (no va en direction) otra cosa;

zpeed= 10 * (pitch/90) asi lo tengo en un codigo de create y step
Título: Re: problema con el eje z d3d
Publicado por: juan pablo en Febrero 06, 2011, 04:44:27 PM
z es el valor de volumen
osea que el pc que tienes tiene vel. para moverse y crecer mas rapido
XD
Título: Re: problema con el eje z d3d
Publicado por: Ge en Febrero 06, 2011, 06:37:31 PM
 :(
Si antes estaba confundido, ahora estoy peor