CoreMotionフレームワークを使用してデバイスの向きを変えることで、オブジェクトの動作が落ちるという2つの方法があります。私は両方のバージョンをコードで試してみたところ、どちらも期待通りに動作しているように見えました。つまり、デバイスの向きに関係なく地球に向かって落ちています。デバイスの向きに関係なく、地球に向かって落ちてくるオブジェクト
最初のバージョンでは、x方向とy方向の加速度(とdy
)が横向きに切り替わっても、両方のバージョンが同じように動作するのは不思議です。
1)
if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
switch UIDevice.currentDevice().orientation {
case .Portrait:
dy = -dy
case .PortraitUpsideDown:
break
case .LandscapeRight:
swap(&dx, &dy)
case .LandscapeLeft:
swap(&dx, &dy)
dy = -dy
default:
dx = 0
dy = 0
}
gravity.gravityDirection = CGVector(dx: dx, dy: dy)
}
2)
if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
switch UIDevice.currentDevice().orientation {
case .Portrait:
dy = -dy
case .PortraitUpsideDown:
break
case .LandscapeRight:
break
case .LandscapeLeft:
break
default:
dx = 0
dy = 0
}
gravity.gravityDirection = CGVector(dx: dx, dy: dy)
}
向きを.LandscapeRightまたは.LandscapeLeftにするには、デバイスをどのように配置しますか? – JohnH