ベクトル(x1,y1)とベクトル(x2,y2)の内積を求めます
dot_product(x1, y1, x2, y2)
内積は2つのベクトルを乗算することで、そのベクトル間の角度を表現することができる値です。 実際の数式は次のように記述できます。
GameMaker:Studioではベクトル(x1,y1)とベクトル(x2,y2)の内積は、x1x2 + y1y2となります。
a ・ b = (x1*x2)+(y1*y2);
内積の興味深いことは入力したベクトルのなす角度と関係していることです
a ・ b = (length of a) * (length of b) * cos(angle)
すなわち、2つのベクトルの内積は、ベクトル間の余弦に等しいことです。
この内積の結果に関連して、いくつか述べることができる事実があります。
これはゲームを作る上で何の役に立つのか? この事実は、かなりの状況で使用できますが、1つには視線・視界を定義することです。
例えば、敵の視線方向と距離からなるベクトルと、敵の座標からみたプレイヤーへの方向ベクトルを計算し、正の値であれば敵はプレイヤーを発見、負の値であれば見つかっていない、という判定をすることができます
var x1, y1, x2, y2; x1 = lengthdir_x(1, image_angle); y1 = lengthdir_y(1, image_angle); x2 = o_Player.x - x; y2 = o_Player.y - y; if dot_product(x1, y1, x2, y2) > 0 seen=true else seen=false;
上記コードは、インスタンスのイメージの角度からベクトルを作成し、 プレイヤー"o_Player"へのベクトルを計算します。 最後にこれら2つのベクトルの内積を計算し、それが0より大きければ 視界に入ったとし、そうでなければ見つかっていないとします