Morti Opublikowano 4 Grudnia 2018 Udostępnij Opublikowano 4 Grudnia 2018 Witam wszystkim. Mam pewnie problem z sterowaniem joystick'iem. Znalazłem w internetach kod na odczytywanie aktualnej wartości przycisków i analogów. Problem polega na tym, że chciałbym w jakieś zmiennej przechowywać wartości wychylenia np w osi X albo móc się do niej odnosić. Niestety udało mi się przypisać jedynie ogólną aktualna wartość a nie konkretnej osi (przyciski nie stanowią problemu). Z góry dziękuję za odpowiedź. Przesyła kod: using System; using System.Collections.Generic; using System.Linq; using SharpDX; using System.Text; using System.Threading.Tasks; using System.Reflection; using SharpDX.DirectInput; namespace ConsoleApp7 { class Program { static void Main() { { var directInput = new DirectInput(); var joystickGuid = Guid.Empty; foreach (var deviceInstance in directInput.GetDevices(DeviceType.Gamepad, DeviceEnumerationFlags.AllDevices)) joystickGuid = deviceInstance.InstanceGuid; // If Gamepad not found, look for a Joystick if (joystickGuid == Guid.Empty) foreach (var deviceInstance in directInput.GetDevices(DeviceType.Joystick, DeviceEnumerationFlags.AllDevices)) joystickGuid = deviceInstance.InstanceGuid; // If Joystick not found, throws an error if (joystickGuid == Guid.Empty) { Console.WriteLine("No joystick/Gamepad found."); Console.ReadKey(); Environment.Exit(1); } // Instantiate the joystick var joystick = new Joystick(directInput, joystickGuid); Console.WriteLine("Found Joystick/Gamepad with GUID: {0}", joystickGuid); // Query all suported ForceFeedback effects var allEffects = joystick.GetEffects(); foreach (var effectInfo in allEffects) Console.WriteLine("Effect available {0}", effectInfo.Name); // Set BufferSize in order to use buffered data. joystick.Properties.BufferSize = 128; // Acquire the joystick joystick.Acquire(); // Poll events from joystick while (true) { joystick.Poll(); var datas = joystick.GetBufferedData(); foreach (var state in datas) { Console.Clear(); Console.WriteLine(state); int zm1 = state.Value; int zm2 = state.Timestamp; int zm3 = state.Sequence; var zm4 = state.RawOffset; Console.WriteLine(zm1); Console.WriteLine(zm2); Console.WriteLine(zm3); Console.WriteLine(zm4); } } } //Console.Clear(); } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Morti Opublikowano 4 Grudnia 2018 Autor Udostępnij Opublikowano 4 Grudnia 2018 Udało się jednak ogarnąć temat: if (state.RawOffset == 4) yy = state.Value; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się