var xx = argument0
var yy = argument1
var ins = argument2
var left_top_x = room_width/2-CELL_WIDTH*(CELL_x_number div 2) - CELL_WIDTH
var left_top_y = room_height/2-CELL_HEIGHT*(CELL_y_number div 2) - CELL_HEIGHT
var px = (obj_player.x - left_top_x) div CELL_WIDTH
var py = (obj_player.y - left_top_y) div CELL_HEIGHT
var R_bbox = (obj_player.bbox_right - left_top_x) div CELL_WIDTH
var L_bbox = (obj_player.bbox_left - left_top_x) div CELL_WIDTH
var T_bbox = (obj_player.bbox_top - left_top_y) div CELL_HEIGHT
var B_bbox = (obj_player.bbox_bottom - left_top_y) div CELL_HEIGHT
var xp = x
var yp = y
x = xx
y = yy
var left_meeting = false;
if ins.geo_grid[# L_bbox,py] = Mountain {left_meeting = true};
var right_meeting = false;
if ins.geo_grid[# R_bbox,py] = Mountain {right_meeting = true};
var top_meeting = false;
if ins.geo_grid[# px,T_bbox] = Mountain {top_meeting = true};
var bottom_meeting = false;
if ins.geo_grid[# px, B_bbox] = Mountain {bottom_meeting = true};
x = xp
y = yp
while (left_meeting or right_meeting or top_meeting or bottom_meeting)
{
ย ย if ins.geo_grid[# L_bbox,py] != Mountain {left_meeting = false};
ย ย if ins.geo_grid[# R_bbox,py] != Mountain {right_meeting = false};
ย ย if ins.geo_grid[# px,T_bbox] != Mountain {top_meeting = false};
ย ย if ins.geo_grid[# px, B_bbox] != Mountain {bottom_meeting = false};
ย ย if left_meeting {hspeed = 0; x += 1}
ย ย if right_meeting {hspeed = 0; x -= 1}
ย ย if top_meeting {vspeed = 0; y+=1}
ย ย if bottom_meeting {vspeed = 0; y-=1}
}
์์๋ณ์๊ฐ ๋ ์๊ฐ์ ๊ทธ๋ฐ๊ฑด ์๋๊ฑด๋ฐ?
while ์ง์ฐ๋ฉด ๋์์ ํ๋๋ฐ ๋ฒฝ์ ๋ถ๋น๋ถ๋น ๊ฑฐ๋ฆฌ๋๊ฒ ๊ฑฐ์ฌ๋ ค์ ๋ณด์ ํ๋๋ฐ ์๊พธ ๋ฌดํ๋ฃจํ๋์
์คํฌ๋ฆฝํธ๋ step์์ ์๋ํ๋์ค
๋ฒฝ์ ๋ถ๋ช์น๋ฉด ๋ฒฝ์ ๋ถ์๋๊น์ง ์ด๋ํ๋๊ฑฐ๊ฐ์๋ฐ while๋ฌธ์์์ L_bbox R_bbox T_bbox B_bbox ๋ ์์ง์ธ๋งํผ ๋ฐ๊ฟ์ค์ผ๋์ง์๋
์ ๋น๋ฐ์ค๋ ์์๋ณ์๋ผ ์ฆ์ ๋ฐ์์ด ์๋๊ตฌ๋ ใณใณ