Функция OnMouseDown, если и не работает

Я делаю проект единства. я хочу, чтобы объект поднимался, когда я нажимал на него. он идет, но когда он переворачивается (когда вращение.z выше 90 и ниже, чем 275), он падает вместо этого вверх. Поэтому я должен добавить отрицательную тягу, чтобы объект поднимался. Но игра, кажется, не обнаруживает это, или эта функция не поддерживает это. Любые предложения, как бы я это исправить?

ФИКСИРОВАННЫЙ!! Я просто должен был заменить transform.up с Vector3.up,

void OnMouseDown(){
        if(this.transform.rotation.z > 90 && this.transform.rotation.z < 275 ) {
            rb.AddForce (transform.up * -thrust);
            GetComponent<Rigidbody2D> ().velocity = Random.insideUnitSphere * 2;
        }
        else 
        {
            rb.AddForce (transform.up * thrust);
            GetComponent<Rigidbody2D> ().velocity = Random.insideUnitSphere *2;

        }

    }

1 ответ

Ваша проблема в том, что this.transform.rotation.z возвращает значение кватерниона, а не углы поворота, представленные углами Эйлера. Чтобы узнать, что такое кватернион, посмотрите здесь. Также ознакомьтесь с этой документацией о ротации. Для реальных углов попробуйте transform.rotation.eulerAngles

Другие вопросы по тегам