Sprite kit 静止的物体仍在移动
这可能是 但我没有资格发表评论。 我的问题是碰撞和静止物体。我正在开发一个小游戏,我有一个播放器,配置如下(从sks文件): 敌人:Sprite kit 静止的物体仍在移动,sprite-kit,Sprite Kit,这可能是 但我没有资格发表评论。 我的问题是碰撞和静止物体。我正在开发一个小游戏,我有一个播放器,配置如下(从sks文件): 敌人: worldNode.enumerateChildNodesWithName("enemy") { node, _ in let enemy = node as! SKSpriteNode enemy.name = "enemy" enemy.physicsBody = SKPhysicsBody(circleOfR
worldNode.enumerateChildNodesWithName("enemy") { node, _ in
let enemy = node as! SKSpriteNode
enemy.name = "enemy"
enemy.physicsBody = SKPhysicsBody(circleOfRadius: 17)
enemy.physicsBody!.dynamic = true
enemy.physicsBody!.mass = 0.4
enemy.physicsBody!.restitution = 0
enemy.physicsBody!.categoryBitMask = PhysicsCategory.enemies
enemy.physicsBody!.collisionBitMask = PhysicsCategory.ground | PhysicsCategory.player
enemy.physicsBody!.contactTestBitMask = PhysicsCategory.player}
我有一个来自brick的平台,配置如下:
worldNode.enumerateChildNodesWithName("fixedBlock") { node, _ in
let fixedBlock = node as! SKSpriteNode
fixedBlock.name = "fixedBlock"
let fixedBlockBodyTexture = SKTexture(imageNamed: "tripleBlocks_physicBody_mask")
fixedBlock.physicsBody = SKPhysicsBody(texture: fixedBlockBodyTexture, size: CGSizeMake(fixedBlock.size.width, fixedBlock.size.height))
fixedBlock.physicsBody!.categoryBitMask = PhysicsCategory.ground
fixedBlock.physicsBody!.collisionBitMask = PhysicsCategory.player | PhysicsCategory.enemies
fixedBlock.physicsBody!.contactTestBitMask = 0
fixedBlock.physicsBody!.dynamic = false
fixedBlock.physicsBody!.affectedByGravity = false
fixedBlock.physicsBody!.allowsRotation = false
fixedBlock.physicsBody!.pinned = false
fixedBlock.physicsBody!.friction = 0.3
fixedBlock.physicsBody!.restitution = 0}
当玩家跳到敌人身上时,他有一种冲动(比如超级马里奥:-)),所以我有这样的想法:
func didBeginContact(contact: SKPhysicsContact) {
let collision: UInt32 = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
if collision == PhysicsCategory.player | PhysicsCategory.enemies {
self.player.physicsBody!.applyImpulse(CGVectorMake(0, 500))}}
好的。。。有时,通常,当玩家跳到敌人身上时,冲动会正确出现,但地砖会向下移动,如果其动态属性设置为false。我试着在地砖上固定一个接缝,但当它被推倒时,它的身体会“出故障”;我试着打印地砖的物理体速度特性,当问题出现时,速度的dx向量大于100,但是静态体是否应该不受力的影响?
有什么想法吗
非常感谢您是否在地图中使用了平铺?不,我使用的是Xcode的内置场景编辑器(sks文件),我曾经遇到过类似的问题,节点偶尔会意外移动。尝试在您的地板砖上使用SKConstraint将其锁定到位。我尝试过,但如果问题发生时块是用关节(固定、销、弹簧)固定的,它会“滑动”、“振动”,因为它的速度属性大于100。。。我也尝试过约束,在这种情况下,当问题发生时,由于约束,精灵的纹理静止不动,但它的physicBody下降了。。。
func didBeginContact(contact: SKPhysicsContact) {
let collision: UInt32 = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
if collision == PhysicsCategory.player | PhysicsCategory.enemies {
self.player.physicsBody!.applyImpulse(CGVectorMake(0, 500))}}