我已经尝试使用Swift开发游戏,该游戏利用了iPhone的3D触摸硬件。但是,当我将应用提交到App Store时,它被拒绝了,因为游戏无法在iPad上玩。
我的问题是,为非3D触摸设备实现类似功能的最佳方法是什么?我现在的操作方式是实现以下方法
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if self.didStartGame, let touch = touches.first {
let maximumPossibleForce = touch.maximumPossibleForce
let force = touch.force
let normalizedForce = min(force/maximumPossibleForce * 2.5, 1)
// Added game-related code here to modify scene accordingly
}
}
在非3D触摸设备上运行后者时,调试touch.maximumPossibleForce
的值将返回0
。
答案 0 :(得分:2)
您无法在不支持此功能的设备上检测到强制触摸。
但是也许您可以在majorRadius
上使用UITouch
属性。它为您提供触摸的半径。
使用半径,您可以允许没有3d触摸设备的用户使用手指的角度来控制您的游戏:
这是上面示例的代码:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let pseudoForce = touches.first?.majorRadius else { return }
label.text = "\(pseudoForce)"
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let pseudoForce = touches.first?.majorRadius else { return }
label.text = "\(pseudoForce)"
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
label.text = "-"
}