Hola gente como andan? Me presento, Mi nombre es Emiliano y tengo la siguiente duda....
Resulta que quiero lograr este efecto que veran en la imagen, perdon que se vea chica (pueden mirar un video de ammo roar o super big gun adventure para entender mejor) , pero el concepto es este, quiero lograr que el personaje al disparar, salga con impulso a la direccion contraria a la que esta disparando, se entiende? ya logre hacer que el personaje dispare y que la pistola mire para donde apunta el mouse, pero no se como hacer para que cada vez que dispare (efecto ametralladora) salga con impulso a la direccion contraria a la que esta disparando, tengo hecho el siguiente codigo en los objetos
(GAME MAKER STUDIO 1.4)
evento step del jugador
/// Controlar velocidad de movimiento
vv = 0;
vh = 0;
v = 30;
if (keyboard_check(ord('W'))) vv = -v; image_index=sprite2
if (keyboard_check(ord('S'))) vv = v; image_index=spr_jugador1
if (keyboard_check(ord('A'))) vh = -v;image_index=sprite2
if (keyboard_check(ord('D'))) vh = v;image_index=spr_jugador1
if (keyboard_check(vk_up)) vv = -1000;
if (keyboard_check(vk_down)) vv = 1000;
if (keyboard_check(vk_left)) vh = -1000;
if (keyboard_check(vk_right)) vh = 1000;
//cambio de sprite del personaje
if x < mouse_x
sprite_index = spr_jugador1
else
sprite_index = sprite2
/// Procesar movimiento
pm = place_meeting(x+vh,y+vv,obj_pared);
cl = collision_line(x,y,x+vh,y+vv,obj_pared,false,false);
if (pm or cl) {
// Comprobando colisión horizontal
for(var i=0;i<abs(vh);i++){
if (place_meeting(x+sign(vh),y,obj_pared)) then break;
x += sign(vh);
}
// Comprobando colisión vertical
for(var i=0;i<abs(vv);i++){
if (place_meeting(x,y+sign(vv),obj_pared)) then break;
y += sign(vv);
}
vh = 0;
vv = 0;
}
hspeed = vh;
vspeed = vv;
Objeto Arma
Evento Step
dir = point_direction(obj_jugador.x, obj_jugador.y, mouse_x, mouse_y);
image_angle= dir
if obj_jugador.x < mouse_x {
image_yscale=+1
x=obj_jugador.x +15
y=obj_jugador.y +15
}
else{
image_yscale= -1
x=obj_jugador.x -15
y=obj_jugador.y +15
}
Evento Glob left button
var xp, yp;
xp=x+10*cos(degtorad(image_angle))
yp=y-10*sin(degtorad(image_angle))
bob = instance_create(xp,yp,obj_bala2)
bob .speed=15
bob .direction=image_angle
bob .image_angle=image_angle
Espero puedan ayudarme, gracias y un abrazo a todos!!
Resulta que quiero lograr este efecto que veran en la imagen, perdon que se vea chica (pueden mirar un video de ammo roar o super big gun adventure para entender mejor) , pero el concepto es este, quiero lograr que el personaje al disparar, salga con impulso a la direccion contraria a la que esta disparando, se entiende? ya logre hacer que el personaje dispare y que la pistola mire para donde apunta el mouse, pero no se como hacer para que cada vez que dispare (efecto ametralladora) salga con impulso a la direccion contraria a la que esta disparando, tengo hecho el siguiente codigo en los objetos
(GAME MAKER STUDIO 1.4)
evento step del jugador
/// Controlar velocidad de movimiento
vv = 0;
vh = 0;
v = 30;
if (keyboard_check(ord('W'))) vv = -v; image_index=sprite2
if (keyboard_check(ord('S'))) vv = v; image_index=spr_jugador1
if (keyboard_check(ord('A'))) vh = -v;image_index=sprite2
if (keyboard_check(ord('D'))) vh = v;image_index=spr_jugador1
if (keyboard_check(vk_up)) vv = -1000;
if (keyboard_check(vk_down)) vv = 1000;
if (keyboard_check(vk_left)) vh = -1000;
if (keyboard_check(vk_right)) vh = 1000;
//cambio de sprite del personaje
if x < mouse_x
sprite_index = spr_jugador1
else
sprite_index = sprite2
/// Procesar movimiento
pm = place_meeting(x+vh,y+vv,obj_pared);
cl = collision_line(x,y,x+vh,y+vv,obj_pared,false,false);
if (pm or cl) {
// Comprobando colisión horizontal
for(var i=0;i<abs(vh);i++){
if (place_meeting(x+sign(vh),y,obj_pared)) then break;
x += sign(vh);
}
// Comprobando colisión vertical
for(var i=0;i<abs(vv);i++){
if (place_meeting(x,y+sign(vv),obj_pared)) then break;
y += sign(vv);
}
vh = 0;
vv = 0;
}
hspeed = vh;
vspeed = vv;
Objeto Arma
Evento Step
dir = point_direction(obj_jugador.x, obj_jugador.y, mouse_x, mouse_y);
image_angle= dir
if obj_jugador.x < mouse_x {
image_yscale=+1
x=obj_jugador.x +15
y=obj_jugador.y +15
}
else{
image_yscale= -1
x=obj_jugador.x -15
y=obj_jugador.y +15
}
Evento Glob left button
var xp, yp;
xp=x+10*cos(degtorad(image_angle))
yp=y-10*sin(degtorad(image_angle))
bob = instance_create(xp,yp,obj_bala2)
bob .speed=15
bob .direction=image_angle
bob .image_angle=image_angle
Espero puedan ayudarme, gracias y un abrazo a todos!!