@Zimaell

Как поворачивать объект не затрагивая ось Y?

Мне нужно сделать плавный поворот объекта, делаю так
void LookAtTarget(GameObject gameObject){
        if(gameObject != null){
            Vector3 direction = target - gameObject.transform.position;
            Quaternion rotation = Quaternion.LookRotation(direction);
            transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Speed * Time.deltaTime);
            }
        }

выходит все так - он поворачивается плавно на поворотах, но при этом его корпус по Y тоже смотрит в точку куда он направляется, то есть если точка стоит на 0 координате Y то подъезжая к ней он "ныряет", смотрит вниз.
Мне же нужно чтобы он поворачивался только по осям X и Z, то есть поворачивался влево вправо, но при этом поворот по Y не затрагивался вообще, как это сделать?
При этом Y статически не получится задать, он может меняться, нужно именно так поворачивать чтобы Y оставался неизменным...
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
zZaKko
@zZaKko
Люблю стратегии и Unity.
У меня есть два предположения как решить:
1. Зафризь поворот по Y в инспекторе или через код, тогда ,если я не ошибаюсь, Y не будет меняться.
2. Создай float переменную , которая будет равна тому повороту по y , что сейчас (то что тебе нужно) и в методе после поворота возвращай rotation по y на то значение, что было перед поворотом. Как-то так:
float stay_y;
void Start()[
stay_y = transform.rotation.y; //Берешь значения y до поворота
}

void LookAtTarget(GameObject gameObject){
        if(gameObject != null){
            Vector3 direction = target - gameObject.transform.position;
            Quaternion rotation = Quaternion.LookRotation(direction);
            transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Speed * Time.deltaTime);
transform.rotation = new Quaternion(transform.rotation.x, stay_y, transform.rotation.z);//Возвращаешь rotation по y  на значение до поворота.
            }
        }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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