Wpis z mikrobloga

W skrypcie Playera mam zawarty taki kod. Chcę by przy kolizji z obiektem otagowanym EndBox wyświetlało mi tekst z instancji BirdWin. No fajnie, ale to nie działa, zawsze wyrzuca mi ten z BirdDied. Owszem, Canvasy są przyporządkowane odpowiednio do skryptu kontrolującego co sie dzieje na ekranie. Poniżej wrzucam kawałki kodu, plox o pomoc.

Player Script:
void OnCollisionEnter2D (){
if(gameObject.tag.Equals("EndBox") == true ){
GameController.instance.BirdWin();
}
else{
isDead = true;
anim.SetTrigger("Die");
GameController.instance.BirdDied();
}
}

https://paste.ofcode.org/3a4nx7HEx2e4VRnuGaGJKst

Game Controller

void FixedUpdate(){
if (gameWin == true){
gameWinText.SetActive(true);
}
}
public void BirdDied (){
gameOverText.SetActive (true);
gameOver = true;
}
public void BirdWin (){
gameWinText.SetActive (true);
gameWin = true;
}
}

https://paste.ofcode.org/38M2p4dPMtKYX3ri4AMgTVg

#gamedev #unity #csharp
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

gameObject.tag


@Finsky: to nie odnosi się przypadkiem do tagu obiektu do którego jest podpięty skrypt? Powinno sprawdzać tag obiektu z którym kolidujemy
  • Odpowiedz
gameObject.tag.Equals("EndBox") == true


@Finsky: also taka uwaga co do kodu - porównanie do true jest tutaj zbędne, bo Equals zwraca true albo false. Wystarczyłby taki warunek:

if(gameObject.tag.Equals("EndBox"))
  • Odpowiedz