Функция 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