Интегрируйте значения по времени, чтобы получить позицию в скрипте Unity C # - PullRequest
0 голосов
/ 06 июня 2019

У меня есть два значения X и Y, которые являются значениями, возвращаемыми джойстиком (Thumbstick), который подключен к Arduino.Теперь я должен выполнить интеграцию (Maths) для этих значений, чтобы вернуть мне позицию курсора.

Я проверил Mathf API в единстве, но не уверен, как его использовать.Или есть какой-то другой фреймворк, который делает то же самое.

speed (t) = value (t) - это значение из arduino

cursor (t) = интегрировать скорость (t)со временем

1 Ответ

0 голосов
/ 07 июня 2019

Вам не нужно вычислять какие-либо интегралы.Вместо этого при каждом обновлении умножьте Time.deltaTime на значение из этого кадра в arduino, чтобы получить дельту курсора для этого кадра.

Для выпуска Windows вы можете использовать win32 API, чтобы соответствующим образом установить положение мыши.(за этот ответ от zachwuzhere на сайте Unity QA)

В целом это может выглядеть так:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern bool SetCursorPos(int X, int Y);

private float horizontalFromArduino;
private float verticalFromArduino;

public float sensitivity;

void Update() 
{
    float newXPos = Input.mousePosition.x + horizontalFromArduino * sensitivity * Time.deltaTime;
    newXPos = Mathf.Clamp(0,Screen.width);
    float newYPos = Input.mousePosition.y + verticalFromArduino * sensitivity * Time.deltaTime;
    newYPos = Mathf.Clamp(0,Screen.height);

    // y=0 is top of screen in windows coordinates, so we subtract newYPos from Screen.height
    SetCursorPos(newXPos, Screen.height - newYPos); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...