イベントメッセージを送信して、プレーヤーが内部にいるかどうかを検出するコライダーがあるセーフゾーンがあります。しかし、セーフゾーン内には他にもたくさんのオブジェクトがあります。私のプレイヤーが内側にあるかどうかを検出するために衝突検出中にプレーヤーと他のオブジェクトのコライダーを区別する
は、私が使用:セーフゾーン内の他のオブジェクトの場合
void Start()
{
if (player == null)
{
player = GameObject.Find("Gringan").GetComponent<Player>();
Debug.Log("player = " + player.name);
}
}
void OnTriggerEnter(Collider other)
{
//else ...
if (other.transform.parent.GetComponent<Player>() == player)
{
print("Collision detected with trigger object " + player.name);
safe = true;
m_Player.PlayerIsSafe.Send(safe);
}
}
を、私はnull参照の例外を取得します。 (他のオブジェクトは.parent
を必要とせず、Player
コンポーネントを持っていません...)
エラーメッセージを受け取らずにこれらのアイテムを検出することで、この問題を回避したいと思います。私は "// else"の前に何かを書いて、次のステートメント(if)に自分のプレイヤーしかいないようにしたいと思います。私はタグやいくつかの方法で試しましたが、動作させることはできません。
ご返信いただきありがとうございます。 私は試しましたが、私はエラーがあります: 安全ゾーンの他のオブジェクトは受け入れません: ".parent"しかし、私は自分のプレーヤーを検出するために必要です。 NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません SafeZone.OnTriggerEnter(Assets/My Assets/Scripts/SafeZone.cs:60) –
@mad_maskプレイヤーオブジェクトのシーン階層を質問に追加しますか?それは、あなたが物事をどのように設定したのか、私にはっきりとわかるはずです。 (大抵、同じレベルではなく 'Player'コンポーネントの下にあなたのコライダーを置いたのだろうかと思っています) – Serlite
@mad_mask私の答えは前提に基づいて編集されています。 – Serlite