Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обзор Unity.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.91 Mб
Скачать

Симуляция Мыши

На вершине встроенной сенсорной поддержки Unity iOS/Android обеспечивает симуляцию мыши. Вы можете использовать функционал мыши из стандартного класса Input.

Акселерометр

При движении мобильных устройств, встроенный акселерометр сообщает линейное ускорение изменяется вдоль трех основных осей в трехмерном пространстве. Ускорение вдоль каждой оси сообщается непосредственно аппаратным обеспечением как значение G-Force. Значение 1,0 представляет собой нагрузку около +1г вдоль заданной оси, а величина –1,0 представляет –1g. Если вы держите устройство в вертикальном положении (с кнопкой “домой” внизу) перед собой, ось X (положительная) будет по правой стороне, ось Y (положительная) будет направлена вверх, а ось Z (положительная) будет указывать на вас.

Вы можете получить значение акселерометра, путем доступа к свойству Input.acceleration.

Приведенный ниже пример скрипта позволяет двигать объект, используя акселерометр:

var speed = 10.0;

function Update () {

var dir : Vector3 = Vector3.zero;

// we assume that the device is held parallel to the ground

// and the Home button is in the right hand

// remap the device acceleration axis to game coordinates:

// 1) XY plane of the device is mapped onto XZ plane

// 2) rotated 90 degrees around Y axis

dir.x = -Input.acceleration.y;

dir.z = Input.acceleration.x;

// clamp acceleration vector to the unit sphere

if (dir.sqrMagnitude > 1)

dir.Normalize();

// Make it move 10 meters per second instead of 10 meters per frame...

dir *= Time.deltaTime;

// Move object

transform.Translate (dir * speed);

}

Фильтр низких частот

Показания акселерометра могут быть отрывистыми и с шумом. Применив низкочастотную фильтрацию на сигнал, вы сгладите его и избавитесь от высокочастотного шума.

Приведенный ниже скрипт демонстрирует, как применить низкочастотную фильтрацию на показания акселерометра:

var AccelerometerUpdateInterval : float = 1.0 / 60.0;

var LowPassKernelWidthInSeconds : float = 1.0;

private var LowPassFilterFactor : float = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds; // tweakable

private var lowPassValue : Vector3 = Vector3.zero;

function Start () {

lowPassValue = Input.acceleration;

}

function LowPassFilterAccelerometer() : Vector3 {

lowPassValue = Mathf.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor);

return lowPassValue;

}

Чем больше значение LowPassKernelWidthInSeconds, тем медленнее фильтруется значение, которое будет приближаться к значению входного образца (и наоборот).

Я хочу получить как можно более точные показания акселерометра. Что я должен делать?

Чтение переменной Input.acceleration не означает дискретизацию. Проще говоря, Unity замеряет результат при частоте 60 Гц. и сохраняет его в переменную. На самом деле все немного сложнее - в случае значительной нагрузки на процессор, замеры акселерометра не происходят с постоянными временными интервалами. В результате, система может сделать два замера за один кадр, и один замер за следующий кадр.

Вы можете получить доступ ко всем замерам, выполненным акселерометром в текущем кадре. Следующий код иллюстрирует простое среднее всех событий акселерометра, которые были собраны в течение последнего кадра:

var period : float = 0.0;

var acc : Vector3 = Vector3.zero;

for (var evnt : iPhoneAccelerationEvent in iPhoneInput.accelerationEvents) {

acc += evnt.acceleration * evnt.deltaTime;

period += evnt.deltaTime;

}

if (period > 0)

acc *= 1.0/period;

return acc;

Мобильная клавиатура

В большинстве случаев, для GUI элементов Unity будет обрабатывать ввод с клавиатуры автоматически, но из скрипта отобразить клавиатуру тоже легко.

GUI Элементы

Когда пользователь тапает на редактируемые элементы интерфейса, клавиатура появляется автоматически. В настоящее время GUI.TextFieldGUI.TextArea иGUI.PasswordField отображают клавиатуру; для подробностей см. GUI class.

Руководство по обращению к клавиатуре

Use the TouchScreenKeyboard.Open() function to open the keyboard. Please see the TouchScreenKeyboard scripting reference for the parameters that this function takes.

Настройки раскладки клавиатуры

Клавиатура поддерживает следующие настройки:-

Свойство:

Функция:

TouchScreenKeyboardType.Default

Сообщения. Могут быть включены в клавиатуре с числами и знаками препинания.

TouchScreenKeyboardType.ASCIICapable

Сообщения. Могут быть включены в клавиатуре с числами и знаками препинания.

TouchScreenKeyboardType.NumbersAndPunctuation

Числа и знаки препинания. Могут быть включены в клавиатуре с сообщениями.

TouchScreenKeyboardType.URL

Сообщения с слешем и .com кнопками. Могут быть включены в клавиатуре с числами и знаками препинания.

TouchScreenKeyboardType.NumberPad

Только числа от 0 до 9.

TouchScreenKeyboardType.PhonePad

Клавиатура используется для ввода цифр номера телефона.

TouchScreenKeyboardType.NamePhonePad

Сообщения. Могут быть включены в клавиатуре телефона.

TouchScreenKeyboardType.EmailAddress

Сообщения со знаком @. Могут быть включены в клавиатуре с числами и знаками препинания.