ํด๊ฒฐ๋ฒ ์?
์ฐธ๊ณ ๋ก ๊ฒ์๋ฉ์ด์ปค์คํ๋์ค2๊ณ ์ ๊ฑฐ ํ๋ถ์ ์ ๋ชจ๋ฅด๊ฒ ์ด์ ๋์ถฉ ์ ๋ ๊ฒ ํด๋๊ณ ๋์ค์ ํ๋ ค๊ณ ...
๋ฐ์ ์ฝ๋ ์ ๊ฒ ์ต๋๋ค
์์ฑ
//์ด๋์๋
spd = 4;
//์ด๋๋ฐฉํฅ
direc = 1;
//์ ํ๋ ฅ
jump_power = 7;
//์ค๋ธ์ ํธ ์ค๋ ฅ์ ์ฉ
gravity_direction=270;
gravity = 0.5;
//์ ํ ์ค๋ณต ์ฒดํฌ
jump_chk = false;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
์คํ
//์ค๋ธ์ ํธ22์ ๋ฟ๋๋ค๋ฉด ํ๋ ์ดํฌ์ ํธ๋ฃจ๋ก ๋ง๋ฌ
killplayer = place_meeting(x,y,object22)
//ํฌํ๋ ์ด๊ฑฐ๊ฐ ํธ๋ฃจ๋ผ๋ฉด ํ๋ ์ด์ด๋ฅผ ์ฃฝ์ธ๋ค
if(killplayer){
vspeed = 0ย
sprite_index=sprite20}
//๋งตํ์ผ๊ณผ ์ถฉ๋ ์ฒดํฌ
tile_collision_scr("ground",spd);
//์ด๋ํค์
๋ ฅ
right = keyboard_check(vk_right);
left = keyboard_check(vk_left);
crouch = keyboard_check(vk_down);
if(!killplayer){
if(!crouch){
if(jump_chk == false){
if(right){
direc = player_move_scr(player_run_spr,x,y,spd,"ground",1);
}
if(left){
direc = player_move_scr(player_run_spr,x,y,-spd,"ground",-1);
}
if(!right and !left and !crouch){
sprite_index = player_idle_spr;
}
jump = keyboard_check_pressed(vk_space);
}
}}
//์ ํ ์
๋ ฅ์
if(!killplayer){
if(!crouch){
if(jump){
if(jump_chk==false){
vspeed = -jump_power;
sprite_index = player_jump_spr;
jump_chk = true;
}}}}
//์ ํ์ค์ ์ด๋ํ ๋
if(!killplayer){
if(!crouch){
if(jump_chk==true){
if(right){
direc = player_move_scr1(player_jump_down_spr,x,y,spd*0.8,"ground",1)
jump_chk=true;
}
if(left){
direc = player_move_scr1(player_jump_down_spr,x,y,-spd*0.8,"ground",-1)
jump_chk=true;
}
}}}
if(!killplayer){
if(!jump){
if(crouch){
sprite_index = player_crouch_spr;
}
}}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
์คํฌ๋ฆฝํธ1 tile_collition_scr
var tile_id = argument0;
var spd = argument1;
var collision_chk = tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right,bbox_top+vspeed)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right, bbox_bottom+vspeed)
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left,bbox_top+vspeed)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left, bbox_bottom+vspeed);
if(!killplayer){
if(collision_chk == 0){
gravity=0.5;
if(vspeed > 0){
sprite_index = player_jump_down_spr;
image_xscale = direc;
jump_chk=true;
}
}else{
gravity=0;
vspeed = 0;
sprite_index = player_idle_spr;
jump_chk=false
image_xscale = direc;
}
}
if (tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right-spd, bbox_top+vspeed)
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_top+vspeed))
jump_chk=true;
์คํฌ๋ฆฝํธ2 player_move_scr
//์บ๋ฆญํฐ ์์ง์
var sprite_val = argument0;
var xx = argument1;
var yy = argument2;
var spd = argument3;
var tile_id = argument4;
var image_xxscale = argument5;
//์คํ๋ผ์ดํธ
sprite_index = sprite_val;
//์ด๋ฏธ์ง ๋ฐฉํฅ
image_xscale = image_xxscale;
//์ค๋ฅธ์ชฝ ์ด๋
if(image_xxscale == 1){
if(tilemap_get_at_pixel(layer_tilemap_get_id( tile_id), bbox_right+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right+spd, bbox_bottom-5)
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_bottom-5)){
//์ค๋ฅธ์ชฝ ์ด๋์ค ์ถฉ๋ O
}else{
//์ผ์ชฝ ์ด๋์ค ์ถฉ๋ O
x=xx+spd;
}
}
//์ผ์ชฝ ์ด๋
if(image_xxscale == -1){
if(tilemap_get_at_pixel(layer_tilemap_get_id( tile_id), bbox_right+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right+spd, bbox_bottom-5)
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_bottom-5)){
//์ผ์ชฝ ์ด๋์ค ์ถฉ๋ O
}else{
//์ผ์ชฝ ์ด๋์ค ์ถฉ๋ X
x=xx+spd;
}
}
return image_xxscale;
์คํฌ๋ฆฝํธ3ย player_move_scr1
var sprite_val = argument0;
var xx = argument1;
var yy = argument2;
var spd = argument3;
var tile_id = argument4;
var image_xxscale = argument5;
//์คํ๋ผ์ดํธ
sprite_index = sprite_val;
//์ด๋ฏธ์ง ๋ฐฉํฅ
image_xscale = image_xxscale;
//์ค๋ฅธ์ชฝ ์ด๋
if(image_xxscale == 1){
if(tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right+spd, bbox_bottom-5)
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_bottom-5)){
//์ค๋ฅธ์ชฝ ์ด๋์ค ์ถฉ๋ O
}else{
//์ผ์ชฝ ์ด๋์ค ์ถฉ๋ O
x=xx+spd;
y=yy
}
}
//์ผ์ชฝ ์ด๋
if(image_xxscale == -1){
if(tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_right+spd, bbox_bottom-5)
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_top)ย
or tilemap_get_at_pixel(layer_tilemap_get_id(tile_id), bbox_left+spd, bbox_bottom-5)){
//์ผ์ชฝ ์ด๋์ค ์ถฉ๋ O
}else{
//์ผ์ชฝ ์ด๋์ค ์ถฉ๋ X
x=xx+spd;
y=yy
}
}
return image_xxscale;
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ฝ๋ ์ ์์ต๋๋น
์ ๋ํฐ๋ผ๋ฉด ํ์ผ์ ์ ๋ถ ์ฝคํฌ์ง ์ฝ๋ผ์ด๋๋ก ํฉ์ณ์ผ ์๋๊น
๊ฒ์ค2
์ ๊ฐ ์ด ๋ฐฉ๋ฒ์ ์ข ๋ฌด์ํ๊ธด ํ๋ฐ ์ ์ด๋ณด๊ฒ ์ต๋๋ค. collision์ฝ๋ ํ์ ํ๋ ์ด์ด๊ฐ ๋ฒฝ์ ๋๊ฒจ์์ผ๋ฉด ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์ค์(horizontal collision์ด๋ผ๋ ๊ฐ์ ํ์) while loop์ผ๋ก x+= 1ํด์ ๋จผ์ ๋น ์ง๋ ์ชฝ์ผ๋ก ๋์ค๊ฒ ํ๋ ์ฝ๋๋ฅผ ์ผ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฒฝ collision์ ํฌ๋ช ํ ์ค๋ธ์ ํธobj_wall์ ๋ง๋ค์ด์ ์ฐ๋๊ฒ ๋ ํธํด์. ๋ง์ง๋ง์ผ๋ก ์ฝ๋๋ ์ ์ ์ฝ์ด๋ดค์ง๋ง collision์ ์ค๋ฅธ์ชฝ ์ผ์ชฝ ๊ตฌ๋ถ ์์ด 10์ค ์ ๋๋ก ์ธ ์ ์์ด์, Shaun Spalding์ด๋ ์ฌ๋์ด platformer๊ฐ์ ์ ๋ง๋ค๊ฑฐ ์ฐธ์กฐํด๋ณด์ธ์.