저는 spritekit을 처음 사용하고 있으며, Acceleromotion으로 게임을 개발하려고 시도하고 있습니다. 화면 밖으로 나가는 SKSpritNode를 제한하면서 게임을 개발하려고합니다. Player.physicsBody ! .dynamic = true이지만이 속성을 "false"로 설정하면 동일한 코드가 작동하지 않습니다. 내가 코드를 아래에 잘못 을 예정하고있다 곳을 가르쳐주세요 :신속하게 Player.physicsBody! dynamic = false를 설정할 때 가속도계가 작동하지 않습니다.
import SpriteKit
import CoreMotion
class EndScene : SKScene,SKPhysicsContactDelegate {
let kShipName = "ship"
var Player = SKSpriteNode(imageNamed: "Airplane")
let motionManager: CMMotionManager = CMMotionManager()
override func didMoveToView(view: SKView) {
physicsWorld.contactDelegate = self
physicsBody = SKPhysicsBody(edgeLoopFromRect: frame)
Player.position = CGPointMake(self.size.width/2, self.size.height/5)
Player.physicsBody = SKPhysicsBody(rectangleOfSize: Player.frame.size)
Player.physicsBody?.affectedByGravity = false
Player.physicsBody?.categoryBitMask = PhysicsCategory.Player
Player.physicsBody?.contactTestBitMask = PhysicsCategory.Enemy
Player.physicsBody?.dynamic = false
Player.physicsBody!.mass = 0.02
self.addChild(Player)
Player.setScale(0.4)
Player.name = kShipName
motionManager.startAccelerometerUpdates()
}
func processUserMotionForUpdate(currentTime: CFTimeInterval) {
// 1
if let ship = childNodeWithName(kShipName) as? SKSpriteNode {
// 2
if let data = motionManager.accelerometerData {
// 3
if fabs(data.acceleration.x) > 0.2 {
// 4 How do you move the ship?
Player.physicsBody!.applyForce(CGVectorMake(30.0 * CGFloat(data.acceleration.x), 0))
}
}
}
}
override func update(currentTime: CFTimeInterval) {
processUserMotionForUpdate(currentTime)
}
}
로 시작해야 운명의 당신의 피라미드를 청소해야 사이드 노트, 당신은 운명의 피라미드가 조금 진행하고있어. 이것을 확인하십시오 : http://pastebin.com/mVs4WTME – Alexander
"작동하지 않습니다", 다른 개발자에게는 대단히 도움이되지 않습니다. 당신은 당신이 기대하는 것과 실제로 일어나는 것을 진술 할 수 있습니까? 아마도 오류 메시지가 표시됩니다 (있는 경우). –
.... 동적이 아닌 객체에 힘을 적용 할 수 없습니다. – Knight0fDragon