首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让PS4和Xbox One控制器在使用SDL2的iOS 13和安卓系统上正常工作?

如何让PS4和Xbox One控制器在使用SDL2的iOS 13和安卓系统上正常工作?
EN

Stack Overflow用户
提问于 2020-01-07 00:31:31
回答 1查看 4.5K关注 0票数 0

我使用SDL2并尝试让我的控制器在iOS 13和Android10上都能发出隆隆声,你可以在下面看到我的代码摘录:

代码语言:javascript
复制
 joystick = SDL_JoystickOpen(device);
 SDL_Haptic * haptic = SDL_HapticOpenFromJoystick(joystick);
 SDL_HapticRumbleInit(haptic);
 SDL_HapticRumblePlay(haptic, (float)0.5, 2000);
 SDL_HapticClose(haptic);

但目前它只能在带有PS4控制器的安卓10上工作,使用Xbox One控制器,在iOS 13和安卓10上,SDL调用SDL_NumHaptics()总是返回0,这与iOS 13上的PS4控制器是一样的。

是否有人遇到过同样的问题?如果是,有没有办法解决或解决这个问题?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2020-05-25 19:41:11

你必须在关闭触觉之前添加SDL_Delay(2000)。如果你不这样做,那么在它真正发出隆隆声之前,你就关闭了它

代码语言:javascript
复制
     joystick = SDL_JoystickOpen(device);
     SDL_Haptic * haptic = SDL_HapticOpenFromJoystick(joystick);
     SDL_HapticRumbleInit(haptic);
     SDL_HapticRumblePlay(haptic, (float)0.5, 2000);

     SDL_Delay(2000);

     SDL_HapticClose(haptic);

我还会添加相应的检查,如sdl2的维基中所示:

代码语言:javascript
复制
SDL_Haptic *haptic;

// Open the device
haptic = SDL_HapticOpen( 0 );
if (haptic == NULL)
   return -1;

// Initialize simple rumble
if (SDL_HapticRumbleInit( haptic ) != 0)
   return -1;

// Play effect at 50% strength for 2 seconds
if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)
   return -1;
SDL_Delay( 2000 );

// Clean up
SDL_HapticClose( haptic );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59615667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档