スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

距離の求め方

距離計算
昨日角度について書いてみたけど、あまりうまく説明できなかったので、私がコモンを作る際にもっともよく利用しているものを持って来てみました。
これは二点間の距離を求めるものです。

主人公の座標を求める。
■変数操作+: CSelf12[主人公のX座標] = 主人公 の 画面X座標
■変数操作+: CSelf13[主人公のY座標] = 主人公 の 画面Y座標
マップイベントの座標を求める。
■変数操作+: CSelf21 = キャラ[CSelf0[対象キャラID]] の 画面X座標
■変数操作+: CSelf22 = キャラ[CSelf0[対象キャラID]] の 画面Y座標
距離の差から距離(a、bのこと)を求める。
■変数操作: CSelf16[対象とのX距離] = CSelf12[主人公のX座標] - CSelf14[対象のX座標]
■変数操作: CSelf17[対象とのY距離] = CSelf13[主人公のY座標] - CSelf15[対象のY座標]
距離を二乗してから足し合わせることで、距離の二乗を求める。
■変数操作: CSelf18[X距離の二乗] = CSelf16[対象とのX距離] * CSelf16[対象とのX距離]
■変数操作: CSelf19[Y距離の二乗] = CSelf17[対象とのY距離] * CSelf17[対象とのY距離]
■変数操作: CSelf20[距離の二乗] = CSelf18[X距離の二乗] + CSelf19[Y距離の二乗]
この後、求めた距離の二乗と、比較したい距離の二乗を比較する。

このコモンではマップイベントのIDを引数として、主人公とマップイベントとの画面距離を算出しています。
当たり判定や、視界のチェックなどによく使います。
原理は一番上の画像に書いてあるものです。
二点間の距離というのは、そのX距離の二乗とY距離の二乗を足し合わせて平方根をとったものとなります。
ただし、最後の平方根の処理は必ずしも必要ではありません。
他と違い計算が複雑な上に、その分処理も重くなってしまいます。
それぐらいなら、測定対象の距離も二乗してしまった方がいいです。
具体的に言うと、二点間の距離が100以下かどうか調べたい場合、100×100=10000と距離の二乗を比較をすればいいわけです。
私はいつもこの手法を使っています。
数学をちゃんと勉強している人にとっては当たり前の知識ですが、アクション要素を含むシステムを制作する場合は必ず必要となるので、役立つと思います。
スポンサーサイト
コメント
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。