2017-02-27 9 views
1

これは私の最初の投稿です。ここではiOSプログラミングの初心者です。私はXcode 8とSwift 3を使って練習をしています。私が望むのは、画面がタップされてもインパルスが働いていないときにボールをジャンプしたいのです。ここに私が書いたコードがあります。Swift PhysicsBody Impulseの影響を受けない

class GameScene: SKScene { 
var footBall = SKSpriteNode(imageNamed: "sfb") 
var Score = 0 
var GameStarted = false 


override func didMove(to view: SKView) { 
    self.removeAllChildren() 
    self.anchorPoint = CGPoint(x: 0.0, y: 0.0) 

    footBall.size = CGSize(width: 100, height: 100) 
    footBall.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
    footBall.physicsBody = SKPhysicsBody(circleOfRadius: footBall.frame.height/2) 
    footBall.physicsBody?.affectedByGravity = false 
    footBall.physicsBody?.allowsRotation = true 
    footBall.physicsBody?.isDynamic = true 
    self.addChild(footBall) 
} 


override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    if(GameStarted == false){ 
     GameStarted = true 
     footBall.physicsBody?.affectedByGravity = true 
     footBall.physicsBody?.velocity = CGVector(dx: 0, dy: 0) 
     footBall.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 90)) 
    } 
    else{ 
     footBall.physicsBody?.velocity = CGVector(dx: 0, dy: 0) 
     footBall.physicsBody?.applyForce(CGVector(dx: 0, dy: 90)) 
    } 
} 

override func update(_ currentTime: TimeInterval) { 

} 

クリックすると、ボールの速度が一時的にゼロになりますが、インパルスが起こっていないことが原因です。これは私の最初の質問であり、私はこれに新しいですので、これを介して私を助け、無知を無視してください。

+0

私はSwiftがどのように動作するのか分かりませんが、本当に 'velocity'も0に設定するべきですか? – pingul

+0

はい、なぜ私は知らないのですか? –

+0

フットボールの質量を設定しましたか? – pingul

答えて

1

実際のブランチでは、インパルスではなく、力を加えています。

変更:あなたは、常にどちらかの速度をゼロにする理由

footBall.physicsBody?.applyImpulse(CGVector(dx: 0, dy: 90)) 

footBall.physicsBody?.applyForce(CGVector(dx: 0, dy: 90)) 

が理解しないでください。

+0

ありがとうございました、私の問題を解決しました –

+0

私は、足元のどこにボールが当たっているかによって、特定の方向にインパルスを加えたいと思っていたのですが、 footBallの右側でタップしたときと同じように、それは左に向かって動かすだけでなく、上に動くべきです。だから私はどのようにそれを達成することができる? –

+0

あなたはすでにあなたにそれを言っていたと思います。シーン座標のボールの中心点を計算し、タッチポイントをタッチ座標と比較してタッチした場所を確認し、適切なdx/dy cgvectorを適用します。まったくボールに触れたかどうかを確認するには、nodesAtPointをチェックしてください。 – GOR

関連する問題