2017-07-07 9 views
1

重力テキストフィールドの入力に基づいて重力を変更し、ビューコントローラからの入力をSKScene(PhysicsScene)に渡すことを許可したいが、カスタム重力を使用するようにシーンを読み込む方法がわからないユーザーがデフォルト値の代わりに使用します。ユーザーの入力に基づいて物理世界の重力を変更した後にシーンをリロードする方法はありますか?

view of simulator

class SimulationViewController: UIViewController, UITextFieldDelegate { 

    var sceneNode : PhysicsScene? 

    @IBOutlet weak var heightTextField: UITextField! 
    @IBOutlet weak var massTextField: UITextField! 
    @IBOutlet weak var gravityTextField: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     sceneNode = PhysicsScene(size: view.frame.size) 
     gravityTextField.delegate = self 
     if let view = self.view as! SKView? { 
      view.presentScene(sceneNode) 
      view.ignoresSiblingOrder = true 
      view.showsPhysics = true 
     } 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     if textField.tag == 0 { 
      if let text = textField.text { 
       sceneNode?.customGravity = Double(text)! 
       print(text) 
      } 
     } 
     return true 
    } 

助けてください!ありがとうございました!あなたは2つのオプションを持っている

答えて

1

は、あなたのPhysicsSceneクラス

var customGravity : Double = 0{ didSet { physicsWorld.gravity = {CGPoint(x:0 y:CGFloat(customGravity)}} 

で財産を作るか、またはカスタムの重力をドロップし、直接

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     if textField.tag == 0 { 
      if let text = textField.text { 
       sceneNode?.customGravity = physicsWorld.gravity = {CGPoint(x:0 y:CGFloat(Double(text)!)} 
       print(text) 
      } 
     } 
     return true 
    } 

私は私のタイプミスをチェックするために利用できるXCodeのを持っていないが、それを設定しますいくつかの変数をunwrapする必要があります

+0

ありがとうございます! –

+0

全く問題ありません – Knight0fDragon

関連する問題