[Unity]画面外の位置を取得してインスタンスを生成させる

Unityで画面外の位置を取得する方法についてメモ。

例えば僕は、スマホゲームで画面外の見えない位置にオブジェクト(敵)を出現させようとしました。ただ、この状況で出現させる位置を絶対配置にしてしまうと、デバイスごとに画面サイズが違うスマートフォンではズレが発生します。

この問題を解決するにはスマホ画面の位置をワールド座標に変換して、その位置にオブジェクトを生成するようにします。ワールド座標とは、シーンビューでオブジェクトを配置するときの位置です。

unity-offscreen-position
白枠線がカメラの描画領域です

実際のコードは以下のようになります。(C#です)

敵オブジェクトをプレハブ化し、それをインスペクターからメンバ変数にセットしておきます。そのプレハブを画面の右上に生成しています。

9行目の「1, 1」とある部分がそれぞれx座標、y座標になっているので、画面外を取得したい場合はマイナス値を設定しましょう。例えばこんな感じです。

生成するインスタンスのスプライトサイズに合わせて数値を調整しましょう。

参考:  Unity – Scripting API: Camera.ViewportToWorldPoint

最終更新日:2014年9月28日

コメント

「何かそこ違うよ」「こうした方が良い」っていう部分があったら指摘して頂けると嬉しいです。

トラックバック

トラックバックは現在ありません。

Trackback: https://increment-log.com/unity-offscreen-position/trackback/