hello, im fairly new to game maker. and learning slowly through crating a megaman/cavestory inspired platform shooter. currently, I'm struggling with directional shooting controls. most movement controls seem to be working ok but ill provide all the code for the player and bullet(called Globllet) objects step and create events. FInally im also struggling with programming the running while shooting sprites. Thankyou all for your time and patience
Create:
Create:
[
/// @description move from player
Globllet.image_xscale = O_player.image_xscale;
Globllet.hspeed = sign(image_xscale)*15;
Step:
[ICODE][
if place_meeting(x,y, O_solid){
instance_destroy(Globllet)
}
O_player Step:
[ICODE][
///player movement
var hinput = keyboard_check(vk_right) - keyboard_check(vk_left);
if hinput != 0 {
hspeed_ += hinput*acceleration_;
hspeed_ = clamp (hspeed_, -max_hspeed_, max_hspeed_);
} else {
hspeed_ = lerp(hspeed_, 0, friction_);
}
if !place_meeting(x, y+1, O_solid) {
vspeed_ += gravity_
} else {
if keyboard_check_pressed(vk_up) {
vspeed_ = jump_height_;
}
}
if place_meeting(x+hspeed_, y, O_solid) {
while !place_meeting(x+sign(hspeed_) , y, O_solid) {
x += sign(hspeed_);
}
hspeed_ = 0;
}
x += hspeed_;
if place_meeting(x, y+vspeed_, O_solid) {
while !place_meeting (x, y+sign(vspeed_) , O_solid) {
y += sign(vspeed_) ;
}
vspeed_ = 0;
}
y += vspeed_;
if (keyboard_check(vk_right)) {
sprite_index = S_PlayerRun;
image_xscale = 1;
}
else if (keyboard_check(vk_left)) {
sprite_index = S_PlayerRun;
image_xscale = -1;
}
else if (keyboard_check(vk_up)) {
sprite_index = S_playerJump
}
else
sprite_index = S_player;
if keyboard_check(ord("X")) {
if (cooldown_<1)
{
instance_create_layer(x, y,"Instances", Globllet)
cooldown_ = 10 ;
}
cooldown_ = cooldown_ - .5
if keyboard_check(ord("X")) {
sprite_index = S_playershoothorizontal
} else {
sprite_index = S_player
}
}
O_player Create:
/// @description create variables
hspeed_ = 0;
vspeed_ = 0;
gravity_ = .5;
acceleration_ = 1;
jump_height_ = -10;
max_hspeed_ = 5;
friction_ = .2;
cooldown_ = 0
O_player key press X
/// @description Insert description here
// You can write your code in this editor
if (keyboard_check_pressed(vk_right)){
sprite_index = S_playerrunshoothorizontal;
image_xscale = 1;
}
else if (keyboard_check(vk_left)){
sprite_index = S_playerrunshoothorizontal;
image_xscale = -1;
}