Как получить значение угла поворота по y координате в gameobject?
Здравствуйте, мне необходимо получить значение угла поворота gameobject’a, но все никак не могу это сделать, подскажите в какую сторону копать?
Вот это мне нужно получить:
Вот это я в итоге получаю:
То, что обведено синим, это я получаю вот так:
А то, что обведено синим, я получаю вот так:
И то что я заметил:
Все правильно выводится до значения в 360, а если объект повернут к примеру на 361 градус то от кода я получу ответ в 359, а точнее в 358.9999
P.S. Всем огромное спасибо
градусов всего 360. круг..
после этого вы по сути уменьшаете отклонение от нуля))
Denis Gaydak, так, хорошо, я вас понял, теперь такой вопрос:
На сцене есть 2 объекта, 1 основной, а 2-ой дополнительный и мне нужно вращать дополнительный вот так:
Но так вращать дополнительный объект не получается, так как, когда основной объект превышает угол поворота в 360, к примеру угол становится 390, то код показывает, что угол равен 330 и тогда в этот момент дополнительный объект начинает вращаться в обратную сторону, т.е. почему тогда в редакторе угол показан 390, а код говорит о том что угол равен 330, а не просто 30, тогда бы все работало. Что делать не пойму, подскажите пожалуйста.
не знаю зачем вам преобразование..
mainObject.transform.rotation.ToAngleAxis(out y, out v);
вы бы описали какого эффекта хотите добиться. что и как вращать))
повторять угол по Y.
кватернионы вообще так устроены))
не выйдет у вас «два оборота по часовой» сделать или что то подобное..таким образом..
для вращения это равноценно тому, что ничего не поменялось..
можете попробовать запоминать и накапливать именно ЧИСЛО..УГОЛ))
и тогда лерпить к примеру от нуля до 720.
именно подставляя напрямую Y.
будет тогда два оборота по часовой..как в анимации..
Спасибо вам огромное за все!!
Вот эта строка помогла мне.
И за советы тоже огромное спасибо! Удачи и еще раз спасибо реально выручили 🙂
Eulerangle: как получить значение свойства Rotation из Inspector?
Доброго времени суток
Как получить значение свойства Rotation из Inspector?
Мне нужно показания углов поворота объекта
Такой код не работает(работает не корректно)
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как получить значение свойства объекта в переменную?
var_dump($obj); Выводит: object(SimpleXMLElement)#338 (1) < =>string(6) «0.1818» > Как передать.
Ну вообщем мне нужно чтобы пользователь крутил объект с помощью мыши(вращал его). Ну и когда я вращаю его «вверх» (ровно по одной оси) значение угла увеличивается, а когда в противоположную сторону то уменьшается, затем начинает расти градусов 20 и снова падает.
Надеюсь понятно объяснил
Добавлено через 1 минуту
Очень странные дела.
Добавлено через 19 секунд
Точно туда смотришь?)
Собственно я и спрашиваю, можно ли как то получить значения Rotation которые в инспекторе?
Ну вообщем я занимаюсь робототехникой, и у меня есть научный проект создания дирижабля для аэрофотосъемки. Когда пришла пора думать как управлять своим дирижаблем, решил обратить свое внимание на Unity3d. Создал простую игровую сцену из двух объектов: модель дирижабля, которую пользователь может вращать как угодно по осям, тем самым задавая направления полета, и Plane перед дирижаблем, на котором будет отображаться видео с камеры в реальном времени. Значения углов нужны для того чтобы знать в какую сторону лететь и как сильно должны вращаться моторы.
Добавлено через 26 минут
У меня выдает такую фигню:
Хотя смотрел что этот метод делает и что он существует
Assets/nrf2401.cs(39,35): error CS0117: `UnityEngine.Vector3′ does not contain a definition for `SignedAngle’
Все using на месте
Добавлено через 1 час 10 минут
Может все таки есть способ просто получать эти 3 значения Rotation из Inspecora? Больше мне ничего от Unity даром не надо
Rotation and Orientation in Unity
Summary
Rotations in 3D applications are usually represented in one of two ways, Quaternions or Euler angles. Each has its own uses and drawbacks. Unity uses Quaternions internally, but shows values of the equivalent Euler angles in the inspector to make it easy for you to edit.
The Difference Between Euler Angles and Quaternions
Euler Angles
Euler angles have a simpler representation, that being three angle values for X, Y and Z that are applied sequentially. To apply a Euler rotation to a particular object, each rotation value is applied in turn, as a rotation around its corresponding axis.
Quaternions
Quaternions can be used to represent the orientation or rotation of an object. This representation internally consists of four numbers (referenced in Unity as x, y, z & w) however these numbers don’t represent angles or axes and you never normally need to access them directly. Unless you are particularly interested in delving into the mathematics of Quaternions, you only really need to know that a Quaternion represents a rotation in 3D space and you will never normally need to know or modify the x, y & z properties.
In Unity all Game Object rotations are stored internally as Quaternions, because the benefits outweigh the limitations.
In the Transform Inspector however, we display the rotation using Euler angles, because this is more easily understood and edited. New values entered into the inspector for the rotation of a Game Object are converted “under the hood” into a new Quaternion rotation value for the object.

As a side-effect, it is possible in the inspector to enter a value of, say, X: 0, Y: 365, Z: 0 for a Game Object’s rotation. This is a value that is not possible to represent as a quaternion, so when you hit Play you’ll see that the object’s rotation values change to X: 0, Y: 5, Z: 0 (or thereabouts). This is because the rotation was converted to a Quaternion which does not have the concept of “A full 360-degree rotation plus 5 degrees”, and instead has simply been set to be oriented in the same way as the result of the rotation.
Implications for Scripting
Creating and Manipulating Quaternions Directly
Unity’s Quaternion class has a number of functions which allow you to create and manipulate rotations without needing to use Euler angles at all. For example:
However sometimes it’s desirable to use Euler angles in your scripts. In this case it’s important to note that you must keep your angles in variables, and only use them to apply them as Euler angles to your rotation. While it’s possible to retrieve Euler angles from a quaternion, if you retrieve, modify and re-apply, problems will arise.
Here are some examples of mistakes commonly made using a hypothetical example of trying to rotate an object around the X axis at 10 degrees per second. This is what you should avoid:
And here is an example of using Euler angles in script correctly:
Implications for Animation
Many 3D authoring packages, and indeed Unity’s own internal animation window, allow you to use Euler angles to specify rotations during an animation.
These rotations values can frequently exceed range expressable by quaternions. For example, if an object should rotate 720 degrees in-place, this could be represented by Euler angles X: 0, Y: 720, Z:0. But this is simply not representable by a Quaternion value.
Unity’s Animation Window
External Animation Sources
When importing animation from external sources, these files usually contain rotational keyframe animation in Euler format. Unity’s default behaviour is to resample these animations and generate a new Quaternion keyframe for every frame in the animation, in an attempt to avoid any situations where the rotation between keyframes may exceed the Quaternion’s valid range.
For example, imagine two keyframes, 6 frames apart, with values for X as 0 on the first keyframe and 270 on the second keyframe. Without resampling, a quaternion interpolation between these two keyframes would rotate 90 degrees in the opposite direction, because that is the shortest way to get from the first orientation to the second orientation. However by resampling and adding a keyframe on every frame, there are now only 45 degrees between keyframes so the rotation will work correctly.
Вычислить угол поворота вектора
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Значение вектора направления повернутого на угол относительно другого вектора
Unity3D. Есть известный вектор направления V1. И есть какой-то определённый угол alpha. Нужно.

У меня есть игровой стол типа аэрохокея. На столе есть дочерняя шайба которой я задаю Velocity. Всё.
Как вычислить 2Д вектор AddForce, исходя из известной силы и известного поворота?
Я делаю android игру на unity. И я встретился со сложностью. rb2d.AddForce(new.
Так у меня всего лишь 1 вектор.
Добавлено через 24 минуты
Все, уже не надо, сделал без углов.
Решение
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Представить угол поворота вокруг произвольного вектора углами Эйлера
Здравствуйте. Пишу программу, совершающую некие манипуляции с неким трехмерным объектом. Вращение.

Всем привет! Помогите, пожалуйста, выполнить задания. Я сделал готовый вариант (1), но это не.
Вычислить модуль и угол наклона к оси ОХ вектора
Вычислить модуль и угол наклона к оси ОХ вектора, соединяющего на плоскости две точки с.
[Unity3d] Math: как найти вектор (углы) поворота?
Собственно как это правильно реализовать?
Пробовал тыкать Quaternion.FromToRotation, но так и не осилил как она работает.
FireFenix
А с другого конца решить нельзя? На готовую капсулу наложить линию будет проще, не пробовали?
Сейчас не имею под рукой Юнити, конкретнее не скажу. Трафика жалко.
Вообще мои знания по юнити не совершенны и есть вероятность, что задачу можно решить не прибегая к поиску самих углов.
Третий вектор у тебя неопределен. Капсула будет вращаться вокруг линии. А конкретно, к.о. дает следущее: не помню, как там функции называются, но нужно найти вектор lookat от одной точки до другой. Это вектор 1, а второй можешь отсчитать от первой точки горизонтально. Работает не всегда. Векторное произведение указанных даст перпендикуляр к линии, а векторное перпендикуляра и исходной линии даст базис, по которому нужно построить ориентацию. Сказал приблизительно, там нужно конкретику смотреть. Думаю, это вы уже знаете, но все же.
Проблем построить базис как раз у меня особо нету, а вот дальше как выявить углы для transform.rotate?
FireFenix
В юнити поворот задается кватернионом. Посмотри в справке, какие есть функции для создания кватерниона. Похоже, что эта подходит http://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html
Вот для 2D случая делал:
Спасибо за помощь, но ни как не соображу развитие этой идеи. Please, Help!
Идея заключает в том, что создаю спрайт и ложу его на кость(вектор) и всё хорошо.
Теперь хочу, чтобы плоскость спрайта была направлена на камеру (аля билбоард), но при этом вращалась вокруг кости на которой лежит.
Подскажите, как правильно вращать вокруг кости в зависимости от камеры?
FireFenix
> Идея заключает в том, что создаю спрайт и ложу его на кость(вектор) и всё
> хорошо.
> Теперь хочу, чтобы плоскость спрайта была направлена на камеру (аля билбоард),
> но при этом вращалась вокруг кости на которой лежит.
FireFenix
> Подскажите, как правильно вращать вокруг кости в зависимости от камеры?
http://docs.unity3d.com/ScriptReference/Transform.Rotate.html
Для вектора вращения можно взять локальный вектор спрайта, который и так смотрит на камеру.
FireFenix, если я правильно тебя понял:
alexzzzz
> Непонятно.
По умолчанию есть 2 точки, которые образуют вектор. На этот вектор я накладываю спрайт и растягиваю его по длине этого вектора.
Теперь я хочу, чтобы спрайт поворачивался на камеру вокруг кости.
> > Теперь хочу, чтобы плоскость спрайта была направлена на камеру (аля
> > билбоард), но при этом вращалась вокруг кости на которой лежит.
Значит, есть вектор оси кости(точка конец-точка начало), центр кости(точка конец/2+точка начало/2), вектор взгляда камеры(от центра кости до позиции камеры).
Двумя векторами (оси кости и вектором камеры) получаем плоскость, проходящую через точку центра кости.
На этой плоскости находим вектор перпендикулярный вектору оси кости и берущий начало в центре кости.
Ну и найти третий вектор, перпендикулярный остальным двум, дело техники.
Вроде как раз этот способ расписал в коде gvm.
Еще можно попробовать перебором. Типа в цикле от 0 до 360, крутим перпендикулярный оси кости вектор.
И определяем скалярное произведение этого вектора и вектора взгляда камеры. Если dot максимальный то и вектор этот
самый подходящий.




