void Update()
{
// レイを視覚的に表示するために使用
Debug.DrawRay (firePos.position, firePos.forward * 10.0f, Color.green);
// マウスを左クリックしたときにFire関数を呼び出す
if (Input.GetMouseButtonDown (0)) {
Fire();
// レイに当たったゲームオブジェクトの情報を受け取る変数
RaycastHit hit;
// Raycast関数でレイを発射してそれに当たったゲームオブジェクトがあるときにはTrueを返す
if(Physics.Raycast(firePos.position,firePos.forward, out hit, 10.0f))
{
// レイに当たったゲームオブジェクトのタグを比較し、それがモンスターであるかをチェック
if(hit.collider.tag == "MONSTER")
{
// SendMessageを用いて渡したい引数を配列に入れる
object[] _params = new object[2];
_params[0] = hit.point; // レイに当たった正確な位置(Vector3)
_params[1] = 20; // モンスターに与えるダメージ値
// モンスターにダメージを与える関数を呼び出す
hit.collider.gameObject.SendMessage("OnDamage"
, _params
, SendMessageOptions.DontRequireReceiver);
}
// レイに当たったゲームオブジェクトがBarrelであるかを確認
if(hit.collider.tag == "BARREL")
{
// ドラム缶に当たったレイの入射角を計算するために発射原点とレイが当たったポイントを渡す
object[] _params = new object[2];
_params[0] = firePos.position;
_params[1] = hit.point;
hit.collider.gameObject.SendMessage ("OnDamage"
,_params
,SendMessageOptions.DontRequireReceiver);
}
}
}
}