Вращение Объекта по оси Y идентично другому объекту?
Здравствуйте, я реально уже не знаю как это сделать мозг кипит. В общем есть два пустых объекта, один я вращаю по всем осям, и ещё есть второй пустой объект который должен вращаться по идентичной оси Y первого объекта, только по Y.
То есть Об1 повернулся на 10 градусов и об2 тоже поворачивается на 10 градусов. Я уже QuaternionЫ пробовал но хз либо я рак либо не правильно построил. В общем кто может помогите плиз)
KraGenDeveloper, Итак, стоит понять, что конкретно не получается. Что вообще может не работать? Это или метод Rotate, или твоя система отслеживания поворота и передачи данных для Rotate обьекта, стоит присмотреться к передаваемым единицам мб.
Spartanec33, напрямую это тип transform.Rotation(x,y,z);
? если да то я пробовал и там вроде чёт выбило я как попробую от пишу что выбивает ибо просто напросто не помню что там выбивало за ошибку.
Spartanec33, ну я пробовал через transform.rotation и Кватернионы о оно чёт не так работало и вместо порворота оно "плавало" с лева в право, если можете подскажите
KraGenDeveloper, итак есть 2 объекта, о1 должен вращаться по оси Y на столько же на сколько повернулся о2, т. е как я понял о1 все-таки может вращаться сам, но если что, то доворачивается еще за о2. как мы знаем метод rotate вращает на сколько-то градусов. из всего вышесказанного делаем вывод, что нужно вращать о1 тогда и только тогда, когда вращается о2 и нам нужно знать насколько ГРАДУСОВ повернуть. т. е мы должны отслеживать изменение о2.transform.rotation.y и если он изменился, то находить насколько он изменился, т е вычесть текущее значение rotation.y из, например, rotation.y прошлого кадра. перевести это в градусы и полученное значение сунуть в метод rotate
Spartanec33, в общем я понял, что то такое я думал делать вот только не попробовал сделать, насколько я понял нужно что то тип
public GameObject Target;//цель для отслеживания вращения по Y
float startRot,nowRot;//Стартовый поворот и новый поворот
void Start(){
startRot = Target.transform.rotation.y;
}
void Update(){
nowRot = Target.transform.rotation.y;
if (nowRot != startRot){//если новый поворот не равен стартовому.
offset = startRot - nowRot;//вот тут не знаю как по друому вычесть ибо может же быть стартовая 1 а новая -3 то //получиться 4 в общем тут тупик
gameObject.transform.Rotate(0,offset,0);
}
}
KraGenDeveloper, думаю стоит startrot обновлять в конце каждого кадра, иначе будут потом рывки в непонятных направлениях. С offset не вижу проблем,выглядит нормально. Не заметил в коде перевода в градусы, работать не будет как должно .
void Update(){
nowRot = Target.transform.rotation.y;
if (nowRot != startRot){
offset = startRot - nowRot;
float deg = offset * Mathf.Rad2Deg ;//перевод радиан в градусы, если эти числа не радианы то что тогда? я просто в биологии не понимаю
gameObject.transform.Rotate(0,deg,0);
}
}