2016-08-16 2 views
-1

저는 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) 
    } 


} 
+0

로 시작해야 운명의 당신의 피라미드를 청소해야 사이드 노트, 당신은 운명의 피라미드가 조금 진행하고있어. 이것을 확인하십시오 : http://pastebin.com/mVs4WTME – Alexander

+0

"작동하지 않습니다", 다른 개발자에게는 대단히 도움이되지 않습니다. 당신은 당신이 기대하는 것과 실제로 일어나는 것을 진술 할 수 있습니까? 아마도 오류 메시지가 표시됩니다 (있는 경우). –

+0

.... 동적이 아닌 객체에 힘을 적용 할 수 없습니다. – Knight0fDragon

답변

-1

를 스프라이트 동적하지 않으면 당신이 그것에/충동을 힘을 적용 할 수 없습니다.

SKPhysicsBodies의 동적 속성에 대한 사과 설명서마다.

"기본값은"예 "입니다. 값이"아니오 "이면 물리 본문이 적용된 모든 힘과 충격을 무시합니다.이 속성은 가장자리 기반 본문에서 무시되며 자동으로 고정됩니다."

다른 사람이 지적한 것처럼, 당신은 또한

또한
func processUserMotionForUpdate(currentTime: CFTimeInterval) { 
    // 1 
    guard let ship = childNodeWithName(kShipName) as? SKSpriteNode else { return } 
    // 2 
    guard let data = motionManager.accelerometerData else { return } 
    // 3 
    guard fabs(data.acceleration.x) > 0.2 else { return } 
    // 4 How do you move the ship? 
    Player.physicsBody!.applyForce(CGVectorMake(30.0 * CGFloat(data.acceleration.x), 0)) 
} 

신속한 지침을 따르려고, 플레이어 속성은 소문자 A와

let player = SKSpriteNode(imageNamed: "Airplane") 
+0

왜 이것이 다운 된 것입니까? 이 간단한 대답은 할 수 없다는 것입니다. – crashoverride777

관련 문제