Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Balas+Fisicas  (Leído 643 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Dublan

en: Enero 30, 2018, 09:50:51 pm
Hola Makeros, necesito ayuda!!  :'(

En mi juego, que tiene las físicas activadas, tengo un personaje que dispara (juego 2D lateral).

Para evitar que la gravedad actúe y las balas tengan efecto parábola, decidí usar el código:

Step event de la bala
phy_linear_velocity_x=lengthdir_x(2000, angulo)
phy_linear_velocity_y=lengthdir_y(2000, angulo)
donde la variable ángulo sería hacia donde apunta la pistola:

Create event de la bala
phy_bullet=true
angulo=point_direction(obj_cabeza_disp.x,obj_cabeza_disp.y,obj_mirilla.x,obj_mirilla.y)

La gran problemática que tengo, es que las variables de velocidad con físicas están "capadas", y no puedo conseguir una velocidad mayor a un máximo. Esta velocidad es muy lenta para simular balas, por lo que supongo que tengo que usar impulsos o fuerzas, pero por más que lo intento no soy capaz de hacerlo funcionar como quiero...Lo más parecido que he logrado ha sido con este código:

Step event de la bala
physics_apply_force(0,0,lengthdir_x(2000, angulo),lengthdir_y(2000, angulo))

Donde ya no me afecta la gravedad, pero la bala sigue yendo muy lenta.

¿Qué estoy haciendo mal o qué no estoy entendiendo?

Mil gracias!

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 en: Febrero 01, 2018, 05:28:52 pm
En el objeto bala debes colocar phy_bullet = true;, así se moverá más rápido.

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Dublan

Respuesta #2 en: Febrero 01, 2018, 07:03:48 pm
He probado a meterlo en el create event y nada.

Probé por si acaso en meterlo en el step event y tampoco  :'(

 


Desconectado LuciaHedgehog

Respuesta #3 en: Febrero 01, 2018, 08:37:23 pm
mmm podrias mostrar un gif o un video de como van esas balas?..
segun mis teorias de gamemakera de 2 años es ponerle aceleracion en el evento step la accion en D&D "friction" para que la velocidad se sume y vaya mas rapida :v, es lo unico que se me ocurre, no he usado las fisicas aun uwu

@MAFYGAMES-
 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Dublan

Respuesta #4 en: Febrero 03, 2018, 08:18:55 pm
Gracias por intentar ayudar LuciaHedgehog, pero con fisicas se complica todo demasiado  :-[

Alguien tiene alguna otra idea????

 


Desconectado Clamud

Respuesta #5 en: Febrero 03, 2018, 08:56:56 pm
Prueb con
phy_linear_damping = 0;

Y en lugar de aplicar una fuerza asigna la velocidad en el evento Create
// 20 px por step
phy_speed_x = lengthdir_x(20, angulo);
phy_speed_y = lengthdir_y(20, angulo);

 
Los siguientes usuarios dieron las gracias a este tema: Yuzo


Desconectado Dublan

Respuesta #6 en: Febrero 03, 2018, 09:51:11 pm
Clamud, ya lo probé, pero las balas cogen gravedad y la trayectoria tiene forma de arco. Por si ayuda, con lo que me has comentado, tengo esto en el objeto bala:

Information about object: obj_disparar_naranja
Sprite: spr_disparo_naranja
Solid: false
Visible: true
Depth: -9999
Persistent: false
Parent:
Children:
Mask:

Physics
Start Awake: true
Is Kinematic: true
Is Sensor: true
Density: 0.1
Restitution: 0.1
Group: 0
Linear Damping: 0
Angular Damping: 0
Friction: -100
Shape: Circle
Points:

(43, 42)
(43, 43)

Create Event:

execute code:

///imagen
image_xscale=0.25
image_yscale=0.25
image_speed=0.5
desviado=0

execute code:

///Ir a mirilla
angulo=point_direction(obj_cabeza_disp.x,obj_cabeza_disp.y,obj_mirilla.x,obj_mirilla.y)

phy_bullet=true
phy_linear_damping = 0;
phy_speed_x = lengthdir_x(20, angulo);
phy_speed_y = lengthdir_y(20, angulo);


 


Desconectado Dublan

Respuesta #7 en: Febrero 09, 2018, 06:22:34 pm
A nadie se le ocurre como poder hacerlo???  :'( :'(