首页 > 解决方案 > 使用加速度计移动、摆动、连接到弹簧的 UIView

问题描述

假设您有一个简单的方形 UIView 坐在视图控制器的视图中:

@IBOutlet var redSquare: UIView!

在此处输入图像描述

想象一下它可以稍微向上/向下向左/向右移动。TBC 它只是停留在同一个完全正常的 3D 平面上,它仍然是玻璃屏幕上的一个普通的“红色方块”;它甚至不旋转。

在此处输入图像描述

在 iOS (1) 中,您可以访问运动管理器...

let mm: CMMotionManager = CMMotionManager()
mm.startAccelerometerUpdates()

并且您可以(2)沿线制作一个物体“连接到弹簧”......

sumthin.physicsBody.dynamic = true
sumthin.physicsBody.affectedByGravity = false
sumthin.physicsBody.mass = 1

最后(3)您可以根据加速度计对物体施加力,例如...

f = mm.accelerometerData
sumthin.physicsBody.applyForce(
      CGVectorMake(CGFloat(f.acceleration.x), CGFloat(f.acceleration.y)))

目标:当你摇晃手机时......

在此处输入图像描述

红色方块将简单地向上/向下“摆动”,左右有点(可能是 10 点左右,只是为了清楚起见);当你停止移动你的手时,它会像弹簧一样回到原来的位置。

你是怎么做到的,用一个普通的 UIView?

标签: iosswiftsprite-kitphysics-engine

解决方案


推荐阅读