Unity analogiczny kod do działającego kod nie działa?

0

Niedawno używałem takiego oto kawałka kodu:

private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.gameObject.tag == "Player")
        {
            collision.gameObject.GetComponent<PlayerMovement>().GetBoost(boostType);
            gameObject.SetActive(false);
        }
    }

Który nie wywala żadnych błędów podczas egzekucji.

Natomiast ten kod, który jakby maksymalnie uprościłem

 private void OnTriggerEnter(Collider other)
    {
        if(other.transform.tag == "Car")
        {
            other.gameObject.GetComponent<TankMovement>().m_Speed = 10f;
            gameObject.SetActive(false);
        }
    }

Przy wykonywaniu się wywala błąd "Object refrence not set to an instance of an object"
Pierwszy projekt jest w 2D, drugi w 3D i zdaję mi się tylko tym się różnią więc o co tutaj chodzi?
Największy mindfuck jaki do tej pory miałem z unity i nie wiem nawet jak mogę dodatkowo opisać mój problem, bo pewnie nie jest opisany zbyt jasno.

Szerszy Opis:
Tank który triggeruje niedziałający skrypt jest praktycznie dokładną kopią(nie ma tylko tego jednego skryptu TankHealth) tego z poradnika https://unity3d.com/learn/tutorials/p[...]eation-control?playlist=20081 . W tym skrypt TankMovement jest niezmieniony.
Niedziałający kod ma za zadanie przekazać jakiego rodzaju przedmiot Tank właśnie "podniósł", tylko to nie działało, więc zmieniłem to na powyższą wersję, wydaje mi się że prostszą wersję.
Obiekt na którym jest ten niedziałający skrypt to zwykły Cube z BoxColliderem, który w zależności od koloru miałby dawać inne powerUpy pojazdowi który go podniósł (motyw z Lego Racers).

0

W drugim kodzie masz "other.transform.tag", transform jest pewnie nullem, wnioskując z pierwszego kodu zamiast transform powinno być gameObject.

0

Ja bardziej stawiam, że to Component, który pobierasz nie jest dodany do gameobjectu. Collider wg. API zwraca transforma bez potrzeby odwoływania się do gameobjectu.

Edit: Teraz nie mam jak sprawdzić, ale możesz się jeszcze odwołać do taga tak: other.tag == "Coś"

0

Zrobiłem kopię skryptu TankMovement, usunąłem orignał, wstawiłem moją kopię i działa. Od początku czułem, że to musi być właśnie tego typu z d**y błąd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0