2014年11月16日日曜日

[Unity]RayCastでプレイヤーと敵の間に壁があるか確かめるLincast

メタルギアのようなかくれんぼゲームを作ろうとすると敵に発見されるシステムと壁に隠れるシステムを作らなければなりません。

敵に発見されるシステムはコライダにOnTriggerEnterを使えばいいのですがそれだけではプレイヤーと敵の間に壁がある場合でも発見されてしまいます。





これでは壁で見えていないはずなのに敵に見つかってしまいます。









そこで敵とプレイヤーの間にRayCastを飛ばして壁があるか判定します。

RayCastでは2点間の距離を測りにくいのでLinecastを使います。

Physics.Linecast (pos, player.position,layerMaskWall)

posは敵自身のポジションでそこからプレイヤーのポジションまでの間にlayerMaskWallである設定したレイヤー(壁)があればtrueを返します。

これでTriggerの中に入っていても見つかっていない状態に出来ます。

0 件のコメント: