Я делаю реплику Марио в единстве для своей домашней работы, и я пытаюсь сделать блок "Невидимый", он начинает невидимым, затем при попадании становится видимым. Я пытаюсь использовать SpriteRenderer.enable, чтобы он работал, он работает для выключения при запуске, но не при попытке сделать его видимым.
Я пытался создать отдельный скрипт для этого конкретного блока, но результаты те же. Все теги установлены правильно, я попытался использовать Debug.log, чтобы увидеть, если я введу «если», где спрайт должен быть включен, но результат отрицательный.
Это метод запуска, отключающий рендерер спрайтов для конкретного блока (он работает):
private void Start()
{
//rendObject = this.gameObject.GetComponent<SpriteRenderer>();
if (gameObject.tag == "Invisible")
{
gameObject.GetComponent<SpriteRenderer>().enabled = false;
}
}
Это скрипт всех блоков:
private void OnCollisionEnter2D(Collision2D collision)
{
if (timesToBeHit > 0)
{
if (collision.gameObject.tag == "Player" && IsPlayerBelow(collision.gameObject))
{
if (gameObject.tag == "Invisible")
{
gameObject.GetComponent<SpriteRenderer>().enabled = true;
}
collision.gameObject.GetComponent<PlayerController>().isJumping = false; //Mario can't jump higher
Instantiate(prefabToAppear, transform.parent.transform.position, Quaternion.identity); //instantiate other obj
timesToBeHit--;
anim.SetTrigger("GotHit"); //hit animation
}
}
if (timesToBeHit == 0)
{
anim.SetBool("EmptyBlock", true); //change sprite in animator
}
}