私は学校のための基本的なゲームを作っています。オブジェクトを破棄すると、私は無限ループが発生します
(敵の)次のアップデート方法では、PlayerHealthスクリプトからブール値を取得しています。
健康状態が悪くなったら、私はgameObject Playerを破壊します。 それゆえ、(敵の)私の更新メソッドは、破壊された私のplayerObjectを検索してループを続けます。
この問題の解決方法はわかりません。私はif/else文がうまくいくことを期待していましたが、そうではありません。
void Update()
{
if (!GameObject.Find("Player").GetComponent <PlayerHealth>().deadPlayer) //false --> Chase
{
transform.position = Vector3.MoveTowards(transform.position, player.transform.position, chaseSpeed); //move towards character
} else
{
transform.position = transform.position;
}
}
いくつかの余分な情報:
は、これは私が
Object reference not set to an instance of an object
を取得していますエラーですしかし、私はplayerObjectがもう存在しないので、それはありません知っています。ダブルクリックすると
if (!GameObject.Find("Player").GetComponent <PlayerHealth>().deadPlayer) //false --> Chase
誰かに助けてもらえますか?私は、値をtrueに変更
スクリプト:
if (currentHealth <= 0)
{
deadPlayer = true;
Destroy(gameObject);
}
プレーヤーオブジェクトを取得してから、そのヘルスコンポーネントにアクセスしようとしています。あなたがプレーヤーを破壊すると、あなたは何かの健康成分を得ることができません。そのため、自分のヘルスコンポーネントにアクセスする前に、有効なプレーヤーオブジェクトを確実に取得する必要があります。 – ManoDestra