碰到一个有意思的事,不清楚是哪边的问题,也不想深究了

  • Creator 版本: 2.4.13
  • 目标平台: 微信小游戏
  • 首个报错:无
  • 编辑器操作系统: macOS
  • 重现概率: 100%

前情介绍:
我们的是个竖屏游戏,最近游戏中要在一个模式中改成横屏,并用重力感应来操作玩家移动

开启重力很自然的就用到了creator提供的接口

cc.systemEvent.on(cc.SystemEvent.EventType.DEVICEMOTION, () => {
   ....
}, this);
cc.systemEvent.setAccelerometerEnabled(true);
cc.systemEvent.setAccelerometerInterval(1 / 60);

并且旋转屏幕也通过wx提供的接口实现了

   wx.setDeviceOrientation({ value: "landscape" });  // ios

   wx.setDeviceOrientation({ value: "landscapeRight" });  // android

有意思的事情来了
到游戏中一体验,

  • android手机上,当前后旋转手机一定角度后,角色的移动会反向1秒钟左右
  • ios手机上,当前后旋转手机一定角度后,游戏屏幕会 左横屏和右横屏切换

然后想到了微信提供的api,来获取手机倾斜角度数据
用下面的接口需要到微信后台隐私政策中添加接口使用说明

wx.startDeviceMotionListening({ interval: 'game'});

wx.onDeviceMotionChange((res) => {
     console.log(">>>>", res.beta, res.gamma)
});

进游戏一看,在android上正常了,但是在ios上,取到的倾斜值跟android上正好相反(肯定是微信那边的问题)

并且在ios上,当手机前后旋转手机一定角度后,游戏屏幕也不会 左横屏和右横屏切换了

正常了!!!

最后想了想,除了在微信后台隐私政策中添加接口使用说明外,也没改别的东西
实在是不清楚为啥在IOS上 左横屏和右横屏不再切换了

使用creator获取到的值,在微信上有问题,如果官方的人看到的话可以查一查
cc.systemEvent.on(cc.SystemEvent.EventType.DEVICEMOTION, () => {

}, this);

1赞