私は以下で "Floor"と呼ばれる別のクラスを持っています。SKSpriteNodeは、init(edgeLoopFrom :)とスタックしています - SKPhysicsBody
class Floor: SKNode {
override init() {
super.init()
//let edgeFrame = CGRect(origin: CGPoint(x: 1,y: 1), size: CGSize(width: 1078, height: 1950))
//self.physicsBody = SKPhysicsBody(edgeLoopFrom: edgeFrame)
let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame)
borderBody.friction = 0
self.physicsBody = borderBody
// Apply a physics body to the node
// self.physicsBody?.isDynamic = false
// Set the bit mask properties
self.physicsBody?.categoryBitMask = floorCategory
self.physicsBody?.contactTestBitMask = nailDropCategory
self.physicsBody?.collisionBitMask = balloonCategory
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemted")
}
}
は、私は基本的にSKSpriteNodeの画面の上部に開始し、それが「床」をタッチし、自身を削除し、再度先頭から再開します下に行くことを落下持っています。私が持っている問題は、私のすべてのSKSpriteNodeが画面の枠の周りで境界線を越えずに上に止まり続けることです。アプリケーションに特定のノードを無視してそれらを受け入れるように指示するにはどうすればよいですか?助けをよろしく!ここで
何が起こっている左右の画面上ではなく、それだけでedgeLoop
if let accelerometerData = motionManager.accelerometerData {
if UIDevice.current.orientation == UIDeviceOrientation.landscapeLeft {
balloon.physicsBody?.velocity = CGVector(dx: accelerometerData.acceleration.x * -500.0, dy: 0)
} else {
balloon.physicsBody?.velocity = CGVector(dx: accelerometerData.acceleration.x * 500.0, dy: 0)
}
}
}
1つの問題は、私は基本的に上から落下物をかわすディスプレイの下部にSKSpriteNodeイメージがあります。 Xcode 9をアップデートしてiPhone Xのためにアプリケーションを更新しなければならなかったので、底のオブジェクトがスクリーンから外れないように、ちょうど正直にedgeLoopを持っています。スクリーンの側面は、オブジェクトが画面の上から落ちたときにそれを検出し、「フロア」に当たった底面に移動して取り除きますが、わかりません。あなたの答えはとても役に立ちました! – Dewan
ループを伸ばすための画像が追加されました。それが役に立ったら –
Robについて話していますが、基本的にはフレーム全体の境界線を作成するのではなく、画面。これは、このボックスは、自分のiPhoneを左または右に傾けると、画面の下にあるSKSpriteNodeイメージを画面の下に置く(Not Under)ことに役立ちます。もし私が何らかの方法でそのノードをスクリーンに留め置き、フレーム全体を囲むようにして、その代わりに底部でこのようにしたいのですが – Dewan