【发布时间】:2016-04-01 18:13:56
【问题描述】:
我正在为学校制作一个基本游戏,但我被困住了。
在以下更新方法中(在敌人身上),我从我的 Player 对象上的 PlayerHealth 脚本中获取一个布尔值。
当我的生命值耗尽时,我会销毁游戏对象播放器。 正因为如此,我的更新方法(在一个敌人身上)不断循环,以寻找我已被破坏的 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);
}
【问题讨论】:
-
您正在获取玩家对象,然后尝试访问他们的健康组件。如果你摧毁了玩家,那么你就无法获得无效的东西的健康成分。因此,在尝试访问他们的健康组件之前,您必须确保获得一个有效的玩家对象。