Version: 5.5

Handles.FreeMoveHandle

Switch to Manual
public static Vector3 FreeMoveHandle (Vector3 position, Quaternion rotation, float size, Vector3 snap, Handles.DrawCapFunction capFunc);

Parameters

position @param position Позиция маркера.
rotation @param rotation Вращение маркера.
size @param size Размер маркера.
capFunc Функция, использующаяся для отображения маркера, Handles.RectangleCap.
snap The grid size to snap movement to.

Returns

Vector3 @return Новую позицию. Если пользователь не выполнил операцию, будет возвращено то же значение, что вы передавали в позицию.

Description

Делает неограниченно движущийся маркер.

Может передвигаться свободно во всех направлениях. Удерживайте CMD для захвата, CMD-SHIFT для выпускания луча в коллайдеры на сцене.


Free Move handle in the Scene View.

Важно: Используйте HandleUtility.GetHandleSize если вам нужны маркеры постоянного размера.

// Name this script "FreeMoveEditor"
using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(FreeMove))] [CanEditMultipleObjects] public class FreeMoveEditor : Editor { public void OnSceneGUI() { FreeMove t = (target as FreeMove);

EditorGUI.BeginChangeCheck(); Vector3 pos = Handles.FreeMoveHandle(t.lookAtPoint, Quaternion.identity, .5f, new Vector3(.5f, .5f, .5f), Handles.RectangleCap); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Free Move LookAt Point"); t.lookAtPoint = pos; t.Update(); } } }

И скрипт, прикрепленный к данному маркеру:

// Name this script "FreeMove"
using UnityEngine;

[ExecuteInEditMode] public class FreeMove : MonoBehaviour { public Vector3 lookAtPoint = Vector3.zero;

public void Update() { transform.LookAt(lookAtPoint); } }