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