2017-03-28 13 views
3

私はボールを射撃してゲームをプレイしようとしています。私はボールが上のボーダーと側のボーダーから跳ねるようにしたい。ボールは、最初はボトムボーダーに配置され、ユーザーがスポットに触れると、ボールはその方向に進み、ボーダーを跳ね返ります。しかし、一旦ボールがバウンドするのではなく、ボトムボーダーに再び触れるとボールが止まるようにしたい。私はボールがすべてのボーダーから飛び跳ねるように作ったが、トップとサイドだけでボールが跳ね返りたい。このコードが適切な応答に十分でない場合、私の謝罪します。私はこのフォーラムで比較的新しいです:)Swift SpriteKit 3辺のみが通行可能な境界線を作成する

 let border = SKPhysicsBody(edgeLoopFrom: self.frame) 
    //create variable representing frame of gamescene 

    border.friction = 0 
    border.restitution = 1 
    self.physicsBody = border 

これは衝突検出のコードです。それは以下垂れ下がるように、私は、シーンよりもわずかに長い矩形(黄緑色のボックスを概説)(白ボックス)フレームにedgeLoopを作成し、{

if (contact.bodyA.categoryBitMask == BodyType.ball.rawValue && contact.bodyB.categoryBitMask == BodyType.BottomBorder.rawValue){ 
     SmallBall.isPaused = true 
     } 
    else if(contact.bodyB.categoryBitMask == BodyType.ball.rawValue && contact.bodyA.categoryBitMask == BodyType.BottomBorder.rawValue) 
    { 
     SmallBall.isPaused = true 
    } 
} 
} 

答えて

2

: FUNCのdidBegin(SKPhysicsContact _コンタクト)シーン。現在持っているのと同じプロパティを持つようにしてください。それから私はシーンの真下にもう一つのphysicsBody(赤いボックス)を作成します。その後didBegin(_ contact: SKPhysicsContact)方法でボールとの衝突や赤いボックスを検出し、

example

+0

それを停止応答あちこちありがとうございました!ボールの動きを止めるコマンドは何でしょうか?私はisPaused = trueとRemoveAllActions()を見たことがあるが、どちらもボールを止めていない。 – at26

+0

私のコードを確認してください。元のコメントで編集しました。 – at26

+1

物理的インパルスを使ってオブジェクトを動かしていると仮定すると、SmallBall.physicsBody?.velocity = CGVector(dx:0、dy:0)のようにベロシティを0,0に設定します。 –