Центровка объекта

Лучший способ помочь другим, поделиться своими находками.

Центровка объекта

Сообщение projectEK 04 апр 2012, 18:52

Скрипт добавляет компаненту Transform две кнопки, которые позволяют переместить объект на начало координат или скопировать позицию и поворот другого объекта.
Изображение
Синтаксис:
Используется javascript
  import System;
  import UnityEngine;
  import UnityEditor;
@CustomEditor(typeof(Transform))

class TransformTool extends Editor
{
var targetTransform:Transform ;

function  OnEnable()
{
 targetTransform = target as Transform;
}
var source:GameObject;
var showPosition : boolean =false;
var status : String = "Центровка";
override function OnInspectorGUI () {
 EditorGUIUtility.LookLikeControls();
var startPos:Vector3  = targetTransform.localPosition;
startPos = EditorGUILayout.Vector3Field("Position", startPos);
if (targetTransform.localPosition != startPos)
{
targetTransform.localPosition = startPos;
}
        if (targetTransform.parent != null)
        {
            var startRot:Vector3  = targetTransform.localRotation.eulerAngles;
            var rot:Vector3 = EditorGUILayout.Vector3Field("Rotation", startRot);
            if (startRot != rot)
            {

                targetTransform.localRotation = Quaternion.identity;
                targetTransform.Rotate(rot);

            }
        }
        else
        {
           var startRot2:Vector3  = targetTransform.rotation.eulerAngles;
            var rot2 :Vector3 = EditorGUILayout.Vector3Field("Rotation", startRot2);
            if (startRot2 != rot2)
            {

                targetTransform.rotation = Quaternion.identity;
                targetTransform.Rotate(rot2);

            }
        }
var startScale:Vector3  = targetTransform.localScale;
startScale = EditorGUILayout.Vector3Field("Scale", startScale);
if (startScale != targetTransform.localScale)
{
targetTransform.localScale = startScale;
}

GUILayout.Space (5);
showPosition = EditorGUILayout.Foldout(showPosition, status);
//============================================================================
if(showPosition)
 {
   if(GUILayout.Button("Центр",EditorStyles.miniButton,GUILayout.Width(60)))
     {
       targetTransform.localPosition=new Vector3(0,0,0);
       targetTransform.localRotation.eulerAngles=new Vector3(0,0,0);
    }
   GUILayout.BeginHorizontal();
   if(GUILayout.Button("Центр",EditorStyles.miniButton,GUILayout.Width(60))&&source)
     {
       var coord=source.transform.position;
       var rott=source.transform.rotation;
        targetTransform.localPosition=new Vector3(coord.x,coord.y,coord.z);
       targetTransform.localRotation = rott;
     }
     source = EditorGUILayout.ObjectField(source, typeof(GameObject));
     GUILayout.EndHorizontal ();
     status = "Центровка";
}

if(!Selection.activeTransform) {
status = "";
showPosition = false;
}
}
}
Изображение
Аватара пользователя
projectEK
UNец
 
Сообщения: 5
Зарегистрирован: 04 апр 2012, 08:49
Откуда: Псков
  • Сайт

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


cron