私のアプリでは、ノードの物理的ボディをプログラムで作成したいと思っています。しかし、物理的なボディをプログラムで作成すると、SpriteKitエディタで作成された物理ボディが機能しますが、動作しないようです。物理学者がプログラムによって作成されると、エディタで作成されたときに他のノードと衝突しません。SKPhysicsBodyの奇妙な振る舞い
physicsBody = SKPhysicsBody(rectangleOf: size)
if let body = self.physicsBody{
body.isDynamic = true
body.affectedByGravity = false
body.allowsRotation = false
body.categoryBitMask = CollisionCategoryBitmask.shootWall.rawValue
body.collisionBitMask = CollisionCategoryBitmask.circle.rawValue
body.contactTestBitMask = CollisionCategoryBitmask.circle.rawValue
}
サイズは、ノードのサイズプロパティです:
は、ここに私のコードです。
フィジックスボディがノードに割り当てられている最初の行をコメントにして、代わりにSpriteKitシーンエディタでフィジックスボディを設定すると機能します。どちらの場合でも、if条件内のコードが実行されていることに注意してください。
更新:面白いです何
は、私がこれを行うときということです:
それはその基本的に何も変えていないので、何の影響も与えてはならないphysicsBody = SKPhysicsBody(bodies: [physicsBody!])
、それは同様に動作しません。これはSpriteKitのバグですか?あなたはこの
required init?(coder aDecoder: NSCoder) {
factor = 0.5
super.init(coder: aDecoder)
self.pBody()
}
を行うと
を使用してこれを行うことができリセットすることによって、あなたは再びケースではありませんnilにそのように設定することを意味している場合、私はあなたには、いくつかの方法 – Knight0fDragon
で体をリセットしている感覚を持っています。シーンupstateメソッドでブレークポイントを設定し、物理ボディの値をチェックしました。これはゼロではありません。 – Lenny1357
いいえあなたが作成したものではなく、新しい一般的な物理学体を適用しています – Knight0fDragon