import SpriteKit
import GameplayKit
import CoreMotion
class GameGravity: SKScene {
var motionManager : CMMotionManager = CMMotionManager()
var node : SKSpriteNode!
override func didMove(to view: SKView) {
//布置場景
self.size = UIScreen.main.bounds.size
node = SKSpriteNode()
node.name = "gravity"
node.size = CGSize(width: 100, height: 100)
node.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
node.color = UIColor.red
self.addChild(node)
print(motionManager)
if motionManager.isAccelerometerAvailable {
print("支持重力")
}
//重力感應(yīng)操作
motionManager.startAccelerometerUpdates()
self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
self.node.physicsBody = SKPhysicsBody(rectangleOf: self.node.frame.size)
self.node.physicsBody?.isDynamic = true //能承受碰撞和其他外力作用
self.node.physicsBody?.affectedByGravity = false //不受重力影響
self.node.physicsBody?.mass = 0.2 //給node任意質(zhì)量,顯得更加自然
}
override func update(_ currentTime: TimeInterval) {
guard let data : CMAccelerometerData = self.motionManager.accelerometerData else {
print("data == nil")
return
}
let value : Double = data.acceleration.y
print(data)
if fabs(value) > 0.2 {
let fvector = CGVector(dx: 80.0 * CGFloat(value), dy: 0)
self.node.physicsBody?.applyForce(fvector)
}
}
}
重力感應(yīng)方向
因?yàn)檫@里是橫屏操作,所以考慮好重力感應(yīng)的x,y,z和node位置