利用陀螺仪模仿王者荣耀的登陆页面,倾斜屏幕时,英雄图片会移动.
(我猜的...也可能是用了更牛逼的技术)
王者荣耀中,应该使用了多个层级,我这里只做一层
import CoreMotion
//全局设置
@IBOutlet weak var backImageView: UIImageView!
@IBOutlet weak var suoluoRight: NSLayoutConstraint!
@IBOutlet weak var suoluoTop: NSLayoutConstraint!
@IBOutlet weak var imageView2: UIImageView!
//全局引用 manager
var manager = CMMotionManager()
//最大可偏移的矢量
let factor:CGFloat = 30.0
override func viewDidLoad() {
super.viewDidLoad()
//初始化全局管理对象
let motionManager = CMMotionManager()
//全局引用 manager 防止销毁
manager = motionManager
//判断陀螺仪可不可以,判断陀螺仪是不是开启
if manager .isGyroAvailable {
let queue = OperationQueue.main
//调用频率
manager.gyroUpdateInterval = 0.1
manager.startDeviceMotionUpdates(to: queue, withHandler: { (motion, error) in
let x = motion?.gravity.x
let y = motion?.gravity.y
let z = motion?.gravity.z
//因为,我们不清楚用户使用怎样的姿势,进入游戏,如果一上来就让图片显示,在获取到角度后,图片会有一段"大跳",对,像范厨师那样
if self.imageView2.image == nil{
self.imageView2.image = UIImage(named: "索罗")
}
print("x---",x!,"y----",y!,"z-----",z!);
//倾斜的角度 这里使用的是 负
let fx = -CGFloat(x!)
let fy = -CGFloat(y!)
//更改约束的
self.suoluoTop.constant = fx * self.factor
self.suoluoRight.constant = fy * self.factor
})
}
}
网友评论