2017-12-21 29 views
-1

SKSpriteKitアプリケーションに別の "Floor"クラスがあります。私が最初にこのクラスを作成したとき、私はSKSpriteNodeを使用して壁/バリアを作成するphysicsBody

self.physicsBody = SKPhysicsBody(edgeLoopF​​rom:self.frame)を使用して、フレーム全体の周りにバリアを持っていた

をそれは実際に入ることからSKSpriteNodesを停止しました。画面の上部にあるので、フレーム壁の左、右、下をどのように作成するのかを理解しようとしています。これは、ディスプレイの左から右に移動する画面の下端(ユーザがまだ見ることができる)のSKSpriteNodesの1つを避けるためです。私はそれがうまくいくかのように構築しているの下にしようとしているが、私はゲームを起動するときに私は壁が表示されません?私は、重力があなたの壁に影響を及ぼしているので、彼らは永遠に忘却の淵に落ちている

skView.showsPhysics =真

import Foundation 
import SpriteKit 

    class Floor: SKNode { 
     override init() { 
      super.init() 

      let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height)) 
      leftWall.position = CGPoint(x: 100, y: 100) 
      leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size) 
      leftWall.physicsBody!.isDynamic = false 
      self.addChild(leftWall) 

      let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height)) 
      rightWall.position = CGPoint(x: 200, y: 200) 
      rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size) 
      rightWall.physicsBody!.isDynamic = false 
      self.addChild(rightWall) 

      // Set the bit mask properties 
      self.physicsBody?.categoryBitMask = balloonCategory 
      self.physicsBody?.contactTestBitMask = nailDropCategory 
      //self.physicsBody?.collisionBitMask = balloonCategory 
     } 

     required init?(coder aDecoder: NSCoder) { 
      fatalError("init(coder:) has not been implemted") 
     } 
    } 
+0

シーンのサイズとスケールモードとは何かを設定し、あなたの体は、これらの力を無視するには持っていますか?私。これらのSpriteノードを100,100と200,200に配置していますが、シーンの可視部分にあることは確かですか?また、主な問題ではなく、フィジックスボディをシーンに2回割り当て、1つしか持たないので、physicsボディをスプライトに追加します。「self.physicsBody =」ではなく「leftWall.physicsBody =」です。 –

+0

あなたの壁の重力をオフにします – Knight0fDragon

+0

基本的にあなたがしたい 'leftWall.isDynamic = false' – Knight0fDragon

答えて

2

を持って、私が間違ってやっている、あまりにもわかりません。

あなたのエッジループを作成したときにのようなものを考慮する必要があるので、あなたは、エッジループは常に静的であるため、それはあなたがボリュームベースのボディを使用している今

何volumneを持っていないので、このことを心配する必要はありませんでした重力およびあなたの体に影響を与える他の力。

単にisDynamic = false

let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height)) 
leftWall.position = CGPoint(x: 100, y: 100) 
leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size) 
leftWall.physicsBody!.isDynamic = false 
self.addChild(leftWall) 

let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 100, height: frame.height)) 
rightWall.position = CGPoint(x: 200, y: 200) 
rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size) 
rightWall.physicsBody!.isDynamic = false 
self.addChild(rightWall) 
関連する問題