
ãšããããããããããäœã£ãŠã¿ã
ããŠãååã¯ããªãåãä¹±ããŠããŸãããããã¯ãããŠãããŠã
æ¬äŒŒ3Dãã³ãžã§ã³RPGã«å¿
èŠãªãã®ããšèšãã°ãã¯ãããã§ãããã
ãããããããã§ãã
ããããããšããã®ã¯ãè¿å¹Žã®RPGãããŒã°ã©ã€ã¯ã®å³ç«¯ãšãã«ããããã§ãããããã«å代ãŠã£ã¶ãŒããªã£ã®ããã«æ¹çŒçŽã«ããããæããªããšæ»ç¥äžå¯èœã¯é¬ŒçéããŸããããã
ä»åã¯ããã£ãããã ãã®åŠçãæããŸããRoomã®ã°ãªãããæãã ãã
å£ããã¬ã€ã€ãŒããŸã æç»ããŸããã
ã§ãããä»åŸãªã«ãã«å©çšã§ããªãããšèããŠããŸããæ¬åœã«ã·ã³ãã«ãããŠãããŸã§ãšã¯æ¯èŒã«ãªããªããããã¿ããããšæããŸãã
/// @description ãããããã®æç»
draw_set_color(c_silver);
// 1ããããããã®ãµã€ãº(奜ããªå€ãå
¥ããŠOK!)
var unit = global.tile_size;
// æç»ç¯å²
var left = 640; // å·Š
var top = 32; // äž
var right = left + (room_width * unit); // å³
var bottom = top + (room_height * unit); // äž
// â åºåãç·ã®æç».
for(var i = 0; i < room_width+1; i++) {
var x1 = left + (unit * i);
var y1 = top;
draw_line(x1, y1, x1, bottom);
}
for(var j = 0; j < room_height+1; j++) {
var x1 = left;
var y1 = top + (unit * j);
draw_line(x1, y1, right, y1);
}ããã¯ããªãç°¡æçãªã®ã§ãæç»ç¯å²ãã«ã¡ã©ã®ãµã€ãºã«ãããã
ãã¬ã€ã€ãŒã®èšé²ãããšã«ãããã§ããŸããã
ãªãããããå®è¡ãããšãã®ããã«ãªããŸãã

âŠãŸããRoomãµã€ãºãèŠãŠããã®ã§ãããããã§ãããã
âŠã
ãïŒããã ãïŒãšæã£ãçæ§ãæ¬åœã«ããã ãâŠ
ã§ã¯ãããŸããïŒïŒ
ãããã«ã¹ãã²ããã£ã®å
ãããã®ã§æžãæããŸããã
// ãããããã®æç»
draw_set_color(c_silver);
// â
ãããããçšã®1ãã¹ã®ãµã€ãºïŒâ»global.tile_sizeã®ãŸãŸã ãšç»é¢ãã¯ã¿åºãã®ã§ãäŸãã°ã8ããã12ããªã©ã®å°ãããããæ°ã«ããŸãïŒ
var unit = 12;
// 2Dãããã®æ Œåãµã€ãºïŒã«ãŒã ã®ãã¯ã»ã«å¹
ã§ã¯ãªãããã¹ã®æ°ãtilemapããèªåååŸããŸãïŒ
var map_el_id = layer_tilemap_get_id("Tiles_tukou");
var map_w_cells = tilemap_get_width(map_el_id);
var map_h_cells = tilemap_get_height(map_el_id);
// æç»ç¯å²
var left = 640; // å·ŠããŒãžã³
var top = 32; // äžããŒãžã³
var right = left + (map_w_cells * unit); // å³
var bottom = top + (map_h_cells * unit); // äž
// â åºåãç·ïŒã°ãªããïŒã®æç»
for(var i = 0; i < map_w_cells + 1; i++) {
var x1 = left + (unit * i);
draw_line(x1, top, x1, bottom);
}
for(var j = 0; j < map_h_cells + 1; j++) {
var y1 = top + (unit * j);
draw_line(left, y1, right, y1);
}
// â¡ãããã®æç»
for(var j = 0; j < map_h_cells; j++) {
for(var i = 0; i < map_w_cells; i++) {
// ãä¿®æ£ãtilemap_get ã§çŽæ¥ãã®ãã¹(i, j)ã«ã¿ã€ã«ãããããã§ãã¯ïŒ
if (tilemap_get(map_el_id, i, j) > 0) {
// å£ïŒã¿ã€ã«ãããå ŽæïŒã¯ã·ã«ããŒã§å¡ãã€ã¶ã
draw_set_color(c_silver);
var x1 = left + (unit * i);
var y1 = top + (unit * j);
var x2 = x1 + unit;
var y2 = y1 + unit;
draw_rectangle(x1, y1, x2, y2, false);
}
}
}
// â¢ãããŸãããã¬ã€ã€ãŒã®çŸåšå°ããããããã«èµ€ç¹ã§åºããŠãããŸãïŒäžèŠãªãæ¶ããŠOKã§ãïŒ
var p_grid_x = Obj_player.x div global.tile_size;
var p_grid_y = Obj_player.y div global.tile_size;
draw_set_color(c_red);
draw_rectangle(left + (p_grid_x * unit), top + (p_grid_y * unit), left + (p_grid_x * unit) + unit, top + (p_grid_y * unit) + unit, false);
ããã«ãããããããã宿ããããŸããïŒ(AIã«çžè«ããã ã)

ãã ããããã«

ã£ãŠæ¡ä»¶ã ã£ãã®ã§ãä¿®æ£ããŸããã
ãã²ã芧ãã ããïŒ
// ãããããã®æç»
draw_set_color(c_silver);
// â
ãããããçšã®1ãã¹ã®ãµã€ãºïŒâ»global.tile_sizeã®ãŸãŸã ãšç»é¢ãã¯ã¿åºãã®ã§ãäŸãã°ã8ããã12ããªã©ã®å°ãããããæ°ã«ããŸãïŒ
var unit = 12;
// â
ãæ°èšå®ããããããã®ã衚瀺æ ãã®ãã¹æ°ãããã§åºå®ããŸãïŒäŸïŒ15ãã¹Ã15ãã¹ã®åè§ãæ ã«ããïŒ
var view_masu = 15;
// 2Dãããã®æ Œåãµã€ãºïŒã«ãŒã ã®ãã¯ã»ã«å¹
ã§ã¯ãªãããã¹ã®æ°ãtilemapããèªåååŸããŸãïŒ
var map_el_id = layer_tilemap_get_id("Tiles_tukou");
var map_w_cells = tilemap_get_width(map_el_id);
var map_h_cells = tilemap_get_height(map_el_id);
// æç»ç¯å²
var left = 1100; // å·ŠããŒãžã³
var top = 32; // äžããŒãžã³
var right = left + (view_masu * unit); // å³ã®éçç·
var bottom = top + (view_masu * unit); // äžã®éçç·
//ãã¬ã€ã€ãŒã®äœçœ®ãã²ããïŒ
var p_grid_x = Obj_player.x div global.tile_size;
var p_grid_y = Obj_player.y div global.tile_size;
// ãã¬ã€ã€ãŒããã®ã15ãã¹ã®æ ãã®ã¡ããã©çãäžã«æ¥ãããã«ãèªã¿èŸŒããããã®éå§ãã¹ãéç®
var start_x = p_grid_x - floor(view_masu / 2);
var start_y = p_grid_y - floor(view_masu / 2);
// â åºåãç·ïŒã°ãªããïŒã®æç»ïŒã«ãŒã ãµã€ãºã«é¢ä¿ãªãã15ãã¹åã®æ ã ãã綺éºã«åŒãïŒ
for(var i = 0; i < view_masu + 1; i++) {
var x1 = left + (unit * i);
draw_line(x1, top, x1, bottom); // 瞊ç·
}
for(var j = 0; j < view_masu + 1; j++) {
var y1 = top + (unit * j);
draw_line(left, y1, right, y1); // 暪ç·
}
// â¡ãããã®æç»ïŒ15Ã15ãã¹ã®ã«ãŒãã«çµãïŒïŒ
for(var j = 0; j < view_masu; j++) {
for(var i = 0; i < view_masu; i++) {
// çŸåšã®æ ã®ã³ãïŒi, jïŒã«å¯Ÿå¿ãããå®éã®ãããã®ãã¹ç®åº§æšïŒcheck_x, check_yïŒ
var check_x = start_x + i;
var check_y = start_y + j;
// ãããã®é
åã®ç¯å²å
ïŒ0以äžïŒã®ãšãã ãã¿ã€ã«ããã§ãã¯
if (check_x >= 0 && check_y >= 0) {
if (tilemap_get(map_el_id, check_x, check_y) > 0) {
// å£ïŒã¿ã€ã«ãããå ŽæïŒã¯ã·ã«ããŒã§å¡ãã€ã¶ã
draw_set_color(c_silver);
var x1 = left + (unit * i);
var y1 = top + (unit * j);
var x2 = x1 + unit;
var y2 = y1 + unit;
draw_rectangle(x1, y1, x2, y2, false);
}
}
}
}
// â¢ãã¬ã€ã€ãŒã®çŸåšå°ïŒåºå®æ ã®ã¡ããã©ãçãäžã®ãã¹ãã«èµ€ç¹ãæã€ïŒ
var center_i = floor(view_masu / 2);
var center_j = floor(view_masu / 2);
draw_set_color(c_red);
var px1 = left + (center_i * unit);
var py1 = top + (center_j * unit);
draw_rectangle(px1, py1, px1 + unit, py1 + unit, false);
ãŸãèŠããã«ããã§äœãã§ããã®ããšèšããŸããšã
ã¡ã¬ãã³(女ç¥è»¢çã·ãªãŒãº)ã®ãããªããããããã§ããŸãã

以äžãä¹ ã ã«ãã³ã·ã§ã³ãçäžããããèšäºã§ããïŒ(仿¥ã¯èå¯ããããããã«äœãå·ããŠãå¿ã ãã¯æž©ããŠãããããã®ã§ã)
//远èšïŒåãã®æç»
// â¢ãã¬ã€ã€ãŒã®çŸåšå°ïŒåºå®æ ã®ã¡ããã©ãçãäžã®ãã¹ãã«åãä»ãã®ç¢å°ãæãïŒïŒ
var center_i = floor(view_masu / 2);
var center_j = floor(view_masu / 2);
// ãã¹ã®äžå¿åº§æšããã£ã¡ãèšç®
var px = left + (center_i * unit) + (unit / 2);
var py = top + (center_j * unit) + (unit / 2);
// ç¢å°ã®ãµã€ãºïŒãã¹ã®å€§ããã«åãããŠèª¿æŽãunitã12ãªã4ã5ãããããã¹ãïŒ
var arrow_size = 5;
draw_set_color(c_red); // ãã¬ã€ã€ãŒã¯èµ€ïŒ
// ãã¬ã€ã€ãŒã®åãã«åãããŠãäžè§åœ¢ïŒâ²ïŒã®3ç¹ã®åº§æšãåããã§èšç®ããŠæç»ïŒ
switch (Obj_player.dir) {
case 0: // åïŒäžåã â²ïŒ
draw_triangle(px, py - arrow_size, px - arrow_size, py + arrow_size, px + arrow_size, py + arrow_size, false);
break;
case 1: // åïŒäžåã âŒïŒ
draw_triangle(px, py + arrow_size, px - arrow_size, py - arrow_size, px + arrow_size, py - arrow_size, false);
break;
case 2: // 西ïŒå·Šåã âïŒ
draw_triangle(px - arrow_size, py, px + arrow_size, py - arrow_size, px + arrow_size, py + arrow_size, false);
break;
case 3: // æ±ïŒå³åã â¶ïŒ
draw_triangle(px + arrow_size, py, px - arrow_size, py - arrow_size, px - arrow_size, py + arrow_size, false);
break;
}