mp_grid_path()


モーションプランについて

mp_grid_path

グリッドのパスを設計する。パスの設計に成功した時にtrueを返す。

構文

mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag)
id
グリッドインデックス番号
path
設計したパスを登録するパスindex。カレントインスタンスのパスに設定するわけではない。
xstart
パスの開始座標(X)
ystart
パスの開始座標(Y)
xgoal
パスの終点座標(X)
ygoal
パスの終点座標(Y)
allowdiag
斜め移動を許可するか指定する(trueで斜め移動許可)

戻り値

Boolean
パスの設計に成功したらtrue

説明

 この関数を使用すると、定義済みの mp_grid を使用して障害物を避けながらスタート地点からゴールまでをたどるパスを生成することができます。
 (xstart, ystart)はグリッド上でのパスの開始座標となり、(xgoal, ygoal)は目標座標をとなります。また"allowdiag"にtrueを指定すると、斜め移動を許可することができます。そしてパスが見つかった時には戻り値はtrueを返します。
 以下の画像では、これがすべて一緒にどのように機能するかを見ることができます:

mp_grid_path_image.png

 "pipe"オブジェクト(障害物)がグリッドの中にあり、ゲームオブジェクトはこれを避けて移動しなければなりません。 緑色のラインは斜め移動を許可したもの、赤色のラインは斜め移動を禁止したものとなります。緑色のラインはとてもエレガントですが、ゲームのルールによってどちらを使用するかは異なります。
 作られるパスは現在のインスタンスに依存しないものです。グリッドIDを持つ特定のインスタンスのパスとなります。
 またデバッグ機能としてmp_grid_draw()?により、パスを可視化することもできます。

注意

パスは事前に作成しておく必要があります(リソースとして登録しておいたもの or path_add()により作成したもの)。またこの関数によりパスはメモリ上で上書きされます。


globalvar grid;
grid = mp_grid_create(0, 0, room_width div 32, room_height div 32, 32, 32);
mp_grid_add_instances(grid, obj_wall, false);
with (obj_Enemy)
{
  path = path_add();
  if mp_grid_path(grid, path, x, y, obj_Player.x, obj_Player.y, 1)
  {
     path_start(path, 0, 3, 0);
  }
}

上記のコードはグローバル変数"grid"にグリッドを作成し、mp_gridを生成しています。そして敵オブジェクト"obj_Enemy"が、プレイヤー"obj_Player"のところまで移動するパスを生成し、パスが見つかれば敵はプレイヤーのところまで移動を開始します。

Wiki内検索

#search(): You already view a search box

MENU

ドキュメント

GMLリファレンス

2ch

その他



最新の30件

2024-03-07 2023-08-09 2023-05-21 2023-05-20 2023-05-04 2022-10-13 2022-07-21 2022-07-02 2022-04-06 2021-11-30 2021-11-26 2021-10-03 2021-09-23 2021-08-15 2021-06-02 2021-01-23 2021-01-21 2021-01-19 2021-01-18 2021-01-16 2021-01-15

人気の10件

今日の10件



これまでの訪問者: 2379
今日の訪問者: 2
昨日の訪問者: 1
閲覧者: 2