create
hsp = 0; // velocidade horizontal
vsp = 0; // velocidade vertical
grv = 1; // aceleração gravitacional
walksp = 5; // velocidade ou valor do movimento
step
// input interface
key_left = keyboard_check(vk_left); // 0 ou 1
key_right = keyboard_check(vk_right); // 0 ou 1
key_jump = keyboard_check_pressed(vk_space); // 0 ou 1
// calcular o movimento
var move = key_right - key_left; // sentido positivo, negativo ou neutro
hsp = move * walksp; // sentido do movimento horizontal
vsp = vsp + grv; // velocidade vertical
if(place_meeting(x,y+1,o_tile_blue) && key_jump){ // interseção
vsp= -8;
}
// colisão horizontal
if(place_meeting(x+hsp,y,o_tile_blue)){
while(!place_meeting(x+sign(hsp),y, o_tile_blue)){
x=x+ sign(hsp);}
hsp=0;
}
x = x + hsp;
// colisão vertical
if(place_meeting(x,y+vsp,o_tile_blue)){
while(!place_meeting(x,y+sign(vsp), o_tile_blue)){
y=y+ sign(vsp);}
vsp=0;
}
y = y + vsp;
// continuação dia 23 de fevereiro de 2018
// no step do objeto player
// animação
if (!place_meeting(x,y+1,o_tile_blue)){
sprite_index = s_playerA;
image_speed = 0;
if(sign(vsp)>0) image_index=1; else image_index=0;
}
else image_speed=1;
if(hsp==0){
sprite_index=s_player;}
else{sprite_index=s_PlayerRun;}
if(hsp !=0) image_xscale=sign(hsp); // direção
***
// animação
if (!place_meeting(x,y+1,o_tile_blue)){
sprite_index = sPlayerA;
image_speed = 0;
if(sign(vsp)>0) image_index=1; else image_index=0;
}
else image_speed=1;
if(hsp==0){ sprite_index=sPlayer;}else{sprite_index=sPlayerR;}}
if(hsp !=0) image_xscale=sign(hsp); // direção
1- Criar a sprite gun
2- dar o nome à sprite
3- ajustar o ponto de referencia para o gatilho
4- criar o objeto Ogun a partir da sprite
5. Na room, criar uma nova layer GUN e arrastar o objeto para layer
6. No oGun criar um Begin Step
x = oPlayer.x;
y = oPlayer.y+10;// o +10 é relativo
image_angle = point_direction(x,y,mouse_x, mouse_y);
Voltamos ao player para alterar a interface de controlo do jogador
key_left=keyboard_check(vk_left) || keyboard_check(ord("A"));
key_right=keyboard_check(vk_right) || keyboard_check(ord("D"));
7. Criar uma sprite Bullet (duas frames) alinhar ao centro
como tem duas frames , teremos de fazê-la parar na frame 2. Bloquear o loop
8. Criar um objeto para a bullet
9. Na room, criar uma camada para as bullets e mover o objeto para lá.
Na bullet
Add event
Other
AnimationEvent
Animation End
image_speed = 0;
image_index = 1;
Draw
PostDraw
if(place_meeting(x,y,oWall)) instance_destroy(); // destroi a bala depois de atingir o alvo
Voltamos a gun
6. No oGun criar um Begin Step
x = oPlayer.x;
y = oPlayer.y+10;// o +10 é relativo
image_angle = point_direction(x,y,mouse_x, mouse_y);
Add Event
Create
firingdelay = 0; // para reter o disparo
Voltamos a gun
6. No oGun criar um Begin Step
x = oPlayer.x;
y = oPlayer.y+10;// o +10 é relativo
image_angle = point_direction(x,y,mouse_x, mouse_y);
firingdelay = firingdelay - 1;
if (mouse_check_button(mb_left)) && (firingdelay <0)
{
firingdelay =5;
with (instance_create_layer(x,y, "Bullets", oBullet)){
speed = 25;
direction = other.image_angle + random_range(-3,3);
// oposto a this
image_Angle=direction;
}
}
// nesta fase já dispara
Agora o recoil // coice
no oGun
firingdelay = 0;
recoil = 0;
voltamos
firingdelay = firingdelay - 1;
recoil = max(0, recoil -1); // devolve o valor maior ou igual a zero
if (mouse_check_button(mb_left)) && (firingdelay <0)
{
firingdelay =5;
with (instance_create_layer(x,y, "Bullets", oBullet)){
speed = 25;
direction = other.image_angle + random_range(-3,3);
// oposto a this
image_Angle=direction;
}
}
x = x - lengthdir_x(recoil, image_angle);
y = y - lengthdir_y(recoil, image_angle);
if(image_angle > 90) && (image_angle <270) {
image_yscale=-1;
}
else {
image_yscale=1;
}
Sem comentários:
Enviar um comentário