Страница 1 из 1

Handles.SnapValue

СообщениеДобавлено: 03 фев 2018, 15:44
AABB
Я чего-то не понимаю, или эта функция совсем не работает?
https://docs.unity3d.com/ScriptReferenc ... Value.html
Возвращает то же, что и было.

Re: Handles.SnapValue

СообщениеДобавлено: 03 фев 2018, 16:05
samana
Да, странно, у меня тоже не выдаёт ожидаемого результата.. а может она делает не совсем то, что описано, хотя странно.
Если что, можете сами написать подобную функцию, я знаю несколько вариантов, но что работает лучше не в курсе

Синтаксис:
Используется csharp
return (int)(val / snap) * snap;

или
Синтаксис:
Используется csharp
return val - (val % snap);


Хотя в обоих вариантах идёт округление в меньшую сторону, но это можно подправить.

Re: Handles.SnapValue

СообщениеДобавлено: 03 фев 2018, 16:26
AABB
Спасибо, я написал себе такую
Синтаксис:
Используется csharp
    float SnapToGrid(float value, float offset)
    {
        return Mathf.Round((value + offset) / gridSize) * gridSize - offset;
    }

Но всё равно, непорядок.

Re: Handles.SnapValue

СообщениеДобавлено: 03 фев 2018, 23:36
seaman
Что внутри функции:
Синтаксис:
Используется csharp
        public static float SnapValue(float val, float snap)
        {
            if (EditorGUI.actionKey && (snap > 0f))
            {
                return (Mathf.Round(val / snap) * snap);
            }
            return val;
        }

Re: Handles.SnapValue

СообщениеДобавлено: 03 фев 2018, 23:48
samana
seaman писал(а):Что внутри функции:

Спасибо! Получается что эта фишка для того, чтобы например с контролом двигать объект с привязкой к сетке. Никогда бы не догадался.