@Default_Nickname

Почему mathf.cos от 180 — это -0.59, а не -1? Почему mathf.cos ведёт себя не так, как я ожидаю?

я сделал так, чтобы поворот по оси z для объекта(в моем случае метеорита) сохранялся в переменную, а дальше высчитывается синус этого угла и косинус, чтобы передвигать объект по осям х и у.
[SerializeField]float dir;
    public float speed;
    float move_x;
    float move_y;
    private void Start()
    {
        dir = transform.rotation.eulerAngles.z;  //запихиваем поворот по оси z в переменную dir
        transform.Translate(0, -10, 0);   //не обращайте внимания на эту строчку, она не важна сейчас
        move_x = Mathf.Cos(dir); //вот высчитываем син/кос переменной dir
        move_y = Mathf.Sin(dir);
    }
    private void Update()
    {
        transform.Translate(move_x * speed * Time.deltaTime, move_y * speed * Time.deltaTime, 0); //перемещаем объект 
    }


по идее должно все работать, ведь объект всегда смотрит в центр(уже из-за другого скрипта), но почему-то юнити говорит, что косинус 180 это не -1, а -0.59
Я что-то не так сделал?
  • Вопрос задан
  • 166 просмотров
Решения вопроса 1
Видимо ты подаёшь туда градусы, вместо радиан.
Судя по документации mathf cos считает в радианах: https://docs.unity3d.com/ScriptReference/Mathf.Cos.html
А cos от 180 радиан - это действительно -0.5984

А вот cos от PI радиан - это ровно -1.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы