2011/03/17

Unityで敵が画面内におさまっているか調べる

先日から、ベジエ曲線を使ったビームを作っていますが、ターゲット(敵)をロックオンして
複数のターゲットに対してビームをうてるようになりました。

ただ、一旦ロックオンしてしまうと、ターゲット画面に表示されなくなった後もそのまま
ロックオンしたままなので、今日はターゲット(敵)が画面から見えなくなったら、その敵の
ロックオンは解除しよう。。ということに。

そこで、メインカメラ用のスクリプトに以下のようなメソッドを追加して、
逐次(Updateが呼ばれるたびに)呼び出すようにしました。

def IsInSight(target as GameObject):
    if not target:
        return false

    targetPos as Vector3 = camera.WorldToViewportPoint(target.collider.bounds.center)

    if targetPos.x < 0.0 or targetPos.x > 1.0:
        return false
    if targetPos.y < 0.0 or targetPos.y > 1.0:
        return false
    return true

いやはや、いろいろと考えることがありますね。。
ぼちぼちがんばります。

0 件のコメント:

コメントを投稿