前提・実現したいこと
現状、coreMotionを使用しているので、傾けた角度によって画像が移動するスピードが変化するのですが、
傾けた際のスピードを遅くし、かつ滑らかに動かしたいです。
(90度くらいに傾けても、ゆっくり落ちるようにしたいです)
どこのコードを修正すれば良いのか、それとも新たなコードが必要になってくるのか、分かりません。
ご教授のほど、よろしくお願い致します。
該当のソースコード
import UIKit import CoreMotion class ViewController: UIViewController { @IBOutlet weak var syabondama: UIImageView! let cmManager = CMMotionManager() let scrSize: CGSize = UIScreen.main.bounds.size let mag: Double = 20.0 var vx, vy: Double? override func viewDidLoad() { super.viewDidLoad() vx = 0.0 vy = 0.0 startGame() } func startGame() { cmManager.deviceMotionUpdateInterval = 0.05 let handler: CMDeviceMotionHandler = { (motionData: CMDeviceMotion?, error: Error?) -> Void in self.stepGame(motionData: motionData, error: error) } cmManager.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: handler) } func stepGame(motionData: CMDeviceMotion?, error: Error?) { var xMin, xMax, yMin, yMax: Int xMin = Int(syabondama.frame.width / 2) xMax = Int(scrSize.width) - xMin yMin = Int(syabondama.frame.height / 2) yMax = Int(scrSize.height) - yMin if let motion = motionData { let gravity = motion.gravity vx = vx! + gravity.x * mag vy = vy! - gravity.y * mag var x: Int = Int(Double(syabondama.center.x) + vx!) var y: Int = Int(Double(syabondama.center.y) + vy!) if (x < xMin) { x = xMin; vx = 0.0 } else if (x > xMax) { x = xMax; vx = 0.0 } if (y < yMin) { y = yMin; vy = 0.0 } else if (y > yMax) { y = yMax; vy = 0.0 } syabondama.center = CGPoint(x: x,y: y) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
試した事
func startGame() { cmManager.deviceMotionUpdateInterval = 0.05
の0.05の部分を0.8にすると、スピードは落ちるのですが、
カタカタと動き、滑らかに動きません。
使用している言語
swift
Xvode 11.4
ご教授のほど、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー