[英]Making physics bodies responsive to fields but not to other physics bodies
在我的游戲中,我有一個飛過屏幕的身體,應該受到我創建的徑向重力場的影響。 為此,我需要將
body.dynamic = true
但這會導致身體與屏幕上的其他對象(與物理對象)發生碰撞,而我只是希望它受到場的影響而不是受這些對象的影響。 如果我把
body.dynamic = false
那么它就不會受到該字段的影響。 我該怎么做才能使身體保持原狀?
編輯這是我創建節點后在屏幕上飛過的主體的代碼
body.physicsBody = SKPhysicsBody(rectangleOfSize: rectangle)
body.physicsBody?.dynamic = true
body.physicsBody?.categoryBitMask = PhysicsCategory.body
body.physicsBody?.contactTestBitMask = PhysicsCategory.otherBody
body.physicsBody?.affectedByGravity = false
body.physicsBody?.fieldBitMask = PhysicsCategory.shield
body.physicsBody?.allowsRotation = false
該圖顯示了我希望身體避免與物體碰撞的2種可能方式。 它可以通過它,也可以繞過它並返回到較早的路徑。 我怎么做?
你應該設置
body.physicsBody?.collisionBitMask = 0
collisionBitMask
一個掩碼,定義可以與該物理物體碰撞的物理物體類別。 如果未設置該值,則您的PhysicsBody
與其他所有PhysicsBodies
PhysicsBody
碰撞,如果PhysicsBodies
值設置為0,則您的PhysicsBody
不會與其他PhysicsBodies
發生碰撞。
如果將collisionBitMask = 0
設置collisionBitMask = 0
body
節點將遍歷所有其他節點,如果您希望其碰撞,則需要設置節點physicsBody?.collisionBitMask
(例如,如果您希望您的節點僅與球和牆physicsBody?.collisionBitMask = kCategoryWall | kCategoryBall
)
希望對您有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.