Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

JointAngularLimitHandle

класс в UnityEditor.IMGUI.Controls

Описание

Класс составной ручки для редактирования пределов многоосевого углового движения в представлении "Сцена".

JointAngularLimitHandle в представлении сцены.

Фигуры, отображаемые с помощью метода DrawHandle, предполагают, что угловые ограничения применяются сначала по оси x, затем по оси y и, наконец, по оси y. ось Z.

Следующий компонент определяет угловые ограничения для CharacterJoint, добавляемого во время выполнения.

using UnityEngine;

public class JointExample : MonoBehaviour { public float xMin { get { return m_XMin; } set { m_XMin = value; } } [SerializeField] float m_XMin = -45f;

public float xMax { get { return m_XMax; } set { m_XMax = value; } } [SerializeField] float m_XMax = 45f;

public float yMax { get { return m_YMax; } set { m_YMax = value; } } [SerializeField] float m_YMax = 45f;

public float zMax { get { return m_ZMax; } set { m_ZMax = value; } } [SerializeField] float m_ZMax = 45f;

protected virtual void Start() { var joint = gameObject.AddComponent<CharacterJoint>();

var limit = joint.lowTwistLimit; limit.limit = m_XMin; joint.lowTwistLimit = limit;

limit = joint.highTwistLimit; limit.limit = m_XMax; joint.highTwistLimit = limit;

limit = joint.swing1Limit; limit.limit = m_YMax; joint.swing1Limit = limit;

limit = joint.swing2Limit; limit.limit = m_ZMax; joint.swing2Limit = limit; } }

Следующий пример пользовательского редактора позволяет редактировать сериализованные угловые ограничения в представлении «Сцена».

using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine;

[CustomEditor(typeof(JointExample)), CanEditMultipleObjects] public class JointExampleEditor : Editor { JointAngularLimitHandle m_Handle = new JointAngularLimitHandle();

// the OnSceneGUI callback uses the Scene view camera for drawing handles by default protected virtual void OnSceneGUI() { var jointExample = (JointExample)target;

// copy the target object's data to the handle m_Handle.xMin = jointExample.xMin; m_Handle.xMax = jointExample.xMax;

// CharacterJoint and ConfigurableJoint implement y- and z-axes symmetrically m_Handle.yMin = -jointExample.yMax; m_Handle.yMax = jointExample.yMax;

m_Handle.zMin = -jointExample.zMax; m_Handle.zMax = jointExample.zMax;

// set the handle matrix to match the object's position/rotation with a uniform scale Matrix4x4 handleMatrix = Matrix4x4.TRS( jointExample.transform.position, jointExample.transform.rotation, Vector3.one );

EditorGUI.BeginChangeCheck();

using (new Handles.DrawingScope(handleMatrix)) { // maintain a constant screen-space size for the handle's radius based on the origin of the handle matrix m_Handle.radius = HandleUtility.GetHandleSize(Vector3.zero);

// draw the handle EditorGUI.BeginChangeCheck(); m_Handle.DrawHandle(); if (EditorGUI.EndChangeCheck()) { // record the target object before setting new values so changes can be undone/redone Undo.RecordObject(jointExample, "Change Joint Example Properties");

// copy the handle's updated data back to the target object jointExample.xMin = m_Handle.xMin; jointExample.xMax = m_Handle.xMax;

jointExample.yMax = m_Handle.yMax == jointExample.yMax ? -m_Handle.yMin : m_Handle.yMax;

jointExample.zMax = m_Handle.zMax == jointExample.zMax ? -m_Handle.zMin : m_Handle.zMax; } } } }

Свойства

angleHandleDrawFunction CapFunction для использования при отображении маркера управления углом.
angleHandleSizeFunction Функция SizeFunction для указания размера ручки управления углом.
fillAlpha Возвращает или указывает непрозрачность, используемую при рендеринге форм заливки для диапазона движения по каждой оси. По умолчанию 0,1.
radius Возвращает или указывает радиус дуги ручки. По умолчанию 1.0.
wireframeAlpha Возвращает или указывает непрозрачность, используемую для кривых линий, расположенных снаружи дуг движения. По умолчанию 1.0.
xHandleColor Возвращает или задает цвет, используемый для маркера, ограничивающего движение вокруг оси x. По умолчанию используется Handles.xAxisColor.
xMax Возвращает или задает максимальное угловое движение вокруг оси x.
xMin Возвращает или задает минимальное угловое движение вокруг оси x.
xMotion Возвращает или указывает, как ограничивается угловое движение относительно оси x. По умолчанию используется ConfigurableJointMotion.Limited.
xRange Возвращает или указывает диапазон допустимых значений углового движения вокруг оси X. По умолчанию [-180,0, 180,0].
yHandleColor Возвращает или указывает цвет, используемый для маркера, ограничивающего движение вокруг оси Y. По умолчанию используется Handles.yAxisColor.
yMax Возвращает или задает максимальное угловое движение относительно оси Y.
yMin Возвращает или задает минимальное угловое движение относительно оси Y.
yMotion Возвращает или указывает, как ограничивается угловое движение относительно оси Y. По умолчанию используется ConfigurableJointMotion.Limited.
yRange Возвращает или указывает диапазон допустимых значений углового движения относительно оси Y. По умолчанию [-180,0, 180,0].
zHandleColor Возвращает или задает цвет, используемый для маркера, ограничивающего движение вокруг оси Z. По умолчанию используется Handles.zAxisColor.
zMax Возвращает или указывает максимальное угловое движение относительно оси Z.
zMin Возвращает или задает минимальное угловое движение относительно оси Z.
zMotion Возвращает или указывает, как ограничивается угловое движение относительно оси Z. По умолчанию используется ConfigurableJointMotion.Limited.
zRange Возвращает или указывает диапазон допустимых значений углового движения относительно оси Z. По умолчанию [-180,0, 180,0].

Конструкторы

JointAngularLimitHandle Создает новый экземпляр класса JointAngularLimitHandle.

Публичные Методы

DrawHandle Функция для отображения этого экземпляра в текущей камере дескриптора с использованием его текущей конфигурации.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3