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();
}
}
}