Как симулировать клавиши клавиатуры в единстве? - PullRequest
1 голос
/ 10 апреля 2019

В настоящее время я работаю над своим градусным проектом, это автопилот, и я делаю самолет в единстве, и все машинное обучение в python, код python будет возвращать только то, что самолет будет делать "вверх, вниз, влево,верно, двигатель включится, ...) и код c # позаботится обо всей физике и так далее, поэтому я хочу смоделировать, что если (слева), то компьютер будет нажимать (A).

IЯ пробовал вводимую, но это все.

string t = GUIUtility.systemCopyBuffer; // this will get the input from python

if (t=="left") // if what the neural network choose is left do this
{
    //what I need to convert the "left" to an actual keyboard press to
    //be used by the crossplatformmanager
}
float roll = CrossPlatformInputManager.GetAxis("Horizontal");

Я ожидаю, что:

if (t=="left")
{ 
    keyboardbutton="A" 
}

и что CrossPlatformInputManager.GetAxis будет относиться к нему так, как если бы я физически нажал клавишу.

1 Ответ

0 голосов
/ 10 апреля 2019

Я думаю, что это проблема XY, обычно имитация ввода необходима для программы, которая находится вне вашего контроля, потому что вы не можете получить прямой доступ к коду. Но для вашего вопроса и Python, и Unity Project написаны вами самостоятельно, поэтому вам не нужно имитировать ввод, просто вызовите метод.

Например, если вы хотите свернуть что-то по горизонтальной оси, вы можете сделать:

var h = Input.GetAxis("Horizontal");
Roll(h);

Тогда, если значение из буфера обмена:

float h;
string t = GUIUtility.systemCopyBuffer;
switch(t) {
   case "left": h = -1f; break;
   case "right": h = 1f; break;
   ....
}
Roll(h);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...