Итак, я беру урок по основам c разработки игр и сейчас работаю над игрой с Unity. Моя игра прекрасно работала до тех пор, пока я не обновил свою версию Unity. Для того, чтобы игрок действительно получил урон, у меня есть метод, который может быть достигнут только при явном вызове скриптом. Каким-то образом земля, на которой нет сценария, повреждает моего игрока.
Я разместил код ниже.
Это часть скрипта игрока
3 references
public void Hurt(int dmg, string yep)
{
HP -= dmg;
Debug.Log($"took {dmg} damage from{yep}. You now have {HP} HP left");
if (HP <= 0)
{
SceneManagement.Death();
}
}
Эта часть скрипта привязана к моему объекту пламени
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag != "FlameTurret" && collision.gameObject.tag != "flame")
{
player.GetComponent<PlayerController>().Hurt(damage, collision.gameObject.tag);
Destroy(this.gameObject);
}
}
Этот прикреплен к снаряду, выпущенному противником
if (collision.gameObject.CompareTag("Player"))
{
if (!called)
{
collision.gameObject.GetComponent<PlayerController>().Hurt(damage, collision.gameObject.tag);
called = true;
}
}
Этот прикреплен к врагу
if (collision.gameObject.CompareTag("Player"))
{
if (!called)
{
collision.gameObject.GetComponent<PlayerController>().Hurt(damage, collision.gameObject.tag);
called = true;
}
Destroy(this.gameObject);
}
Вывод на консоль
Ничто с тэгом "Ground" не имеет скрипта, и ничто иное, как методы, которые я выложил, не должно ссылаться на мой метод Hurt (), но земля все равно повреждает моего игрока. Любая помощь будет принята с благодарностью!