Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - BoondDark

1
Lo tengo,

primero tienes que centrar el Sprite del jugador directamente en su editor(solo dale a la opción center), Luego la arma en el editor de su Sprite acomódala mirando hacia la derecha y la vas a centrar de la siguiente manera: primero presiona(center), veras que el centro estará en la mitad del arma, luego acomoda el centro de la coordenada x a tu gusto para que gire bien, ej: si la arma mide 32 en Width x 16 en Height, un buen centro podría ser: (0,8). lo importante es que de dejes el centro por defecto que te da la opción solo en el eje Y, la que acomodas a gusto tuyo es la X pero este centro a mi parecer esta bien (0,8). Ahora la bala también tiene que estar centrada por default como la centra el editor de Sprite.

Una vez que ya tienes los Sprite correctamente acomodados y centrados, viene la parte del codigo:

Me imagino que ya tienes tus Algoritmos necesarios para usar el arma con tu jugador, así que aquí lo mas importante es el arma.

Para la Arma:
///Evento Step

//Seguir al Jugador
x=obj_player.x
y=obj_player.y

//Apuntar Respecto al Mouse
image_angle=point_direction(x,y,mouse_x,mouse_y);

//Evento Global Left Button o cual sea el mecanismo donde disparas
instance_create(x+lengthdir_x(sprite_width,image_angle),y+lengthdir_y(sprite_width,image_angle),obj_bala);

//La bala
///Evento Create
direction=point_direction(x,y,mouse_x,mouse_y);
speed=4;


Ya con este código podrás lograr que la bala siempre se cree en la punta del arma sin importar su Angulo de rotación, que es lo que te interesa.

Saludos!
Mucha Suerte Creador!
2
Hola a todo mundo, espero que se encuentren muy bien, resulta que luego de comparar mi juego en diferentes ordenadores, resulta que algunas cosas con físicas o movimientos con aceleración varían respecto el ordenador. así que recurrí al Delta Time, lo que hice fue lo siguiente:

//Create
delta=(delta_time/1000000)*60;
g=0;
dir=0;

//Step
if(place_free(x,y+1)) {
    g+=0.4*delta;
}
    repeat(g*dir) {
        if(place_free(x,y+sign(g))) {
            y = y + sign(g);
        } else {
            g=0;
            break;
        }
    }
    if(g>0){dir=1;}else{dir=-1;}
if(keyboard_check_pressed(vk_space)){g-=12 *delta;}

//Begin Step
delta=(delta_time/1000000)*60;

El principal problema es que debería funcionar ya que con la función repeat esta tomando el valor de g que es lo que varia con los frames, resulta que cuando renderizo a 60 fps va bien, pero cuando lo pruebo a 30 fps salta muchísimo mas alto, ayuda por favor, por mas que intendo cosas no logro solucionar el problema, muchas gracias amigos, y espero que este sistema de salto de colisión precisa pueda servirle a quien lo necesite también