定数:スコープ


Game Maker Language リファレンス > 定数一覧 > スコープ

スコープ

※定数というよりは、キーワードの色が濃い

global
グローバル変数を表す。
local
var宣言された変数を表す。5.3A以前の仕様の名残かも。
self
実行しているインスタンス自身を指す。
other
特別なインスタンスを指す。状況に応じて指す物が違う。(※下記参照)
all
全てのインスタンス/オブジェクトを指す。
noone
対象となるインスタンスが無いことを意味する。

otherの使い方

特別なキーワードである"other"は2つの異なる使い方をするインスタンス変数です。

  1. withブロックで使う時
  2. 衝突イベントで使う時

ここではそれらの使い方を説明します。

1.withブロックで使う

例えばインスタンスの生成であるinstance_create()関数をwithブロックに入れると、otherは自身のインスタンス変数となります。

with (instance_create(x, y, obj_Ball))
{
  speed    = other.speed; // 生成したインスタンスに速さを設定
  direction = other.direction; // 生成したインスタンスに方向を設定
}

 上記コードは、インスタンス自身の速さと方向を生成したインスタンスに代入しています。(withに指定したオブジェクトは"self"変数に代入されます)
 "other"の説明とは直接関係ありませんが、以下の処理は一番近くにある"obj_Ball"インスタンスを破棄します。

with (instance_nearest(x, y, obj_Ball))
{
  instance_destroy(); // 一番近いインスタンスを破棄する
}

下記コードは"obj_ball"の"str"値が自身の"str"より小さければターゲットとする、という記述となります。

var inst;
inst = none;
with (obj_ball)
{
  if str > other.str inst = id;
}
if inst != noone target = inst;

2.衝突イベントで使う

 衝突イベントは2つのインスタンス同士でのみ発生します。もちろん複数のインスタンスでの複数の衝突検知も考えられますが、GameMaker:Studioでは1on1の基本的な衝突検知を採用しています。そして"other"変数は衝突した相手を表します。
 例えばプレイヤーが弾を打ち、それが敵に衝突した場合に弾の種類によって異なるダメージを与えるには以下の様な記述をします。

// ■プレイヤーが弾を発射する処理
var nnn;
nnn = instance_create(x, y, obj_Bullet);
nnn.damage = 5 + irandom(5); // 弾の威力
nnn.speed = 8; // 弾の速さ
nnn.direction = point_direction(x, y, obj_Enemy.x, obj_Enemy.y); // 敵に向かって弾を発射

これにより発射された弾が敵に当たると、敵の衝突イベントが発生します。

// ■敵の衝突イベント
hp -= other.damage; // 弾の威力だけHPを減少させる
if hp <= 0 instance_destroy(); // HPが0以下なら死亡

 "other"変数により弾の威力"damage"を取得し、敵のHPを減らすことができます。HPが0以下になれば敵は死亡します。
 さらに敵を倒したことによりプレイヤーの"mana"を回復させ、敵を倒したフラグを送ることも可能です。例は以下のようになります。

other.mana += 10; //add ten to the other instance "mana" variable
other.hit = true; //set the other instance variable "hit" to true, creating it if the variable doesn't already exist

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件



これまでの訪問者: 6912
今日の訪問者: 2
昨日の訪問者: 3
閲覧者: 2