敵に発見されるシステムはコライダにOnTriggerEnterを使えばいいのですがそれだけではプレイヤーと敵の間に壁がある場合でも発見されてしまいます。
これでは壁で見えていないはずなのに敵に見つかってしまいます。
そこで敵とプレイヤーの間にRayCastを飛ばして壁があるか判定します。
RayCastでは2点間の距離を測りにくいのでLinecastを使います。
Physics.Linecast (pos, player.position,layerMaskWall)
posは敵自身のポジションでそこからプレイヤーのポジションまでの間にlayerMaskWallである設定したレイヤー(壁)があればtrueを返します。
これでTriggerの中に入っていても見つかっていない状態に出来ます。
0 件のコメント:
コメントを投稿