如何使Sprite成为另一个Sprite的障碍?

问题描述 投票:0回答:1

我正在制作一个带有移动精灵的障碍物并学习SpriteKit的障碍。我希望移动的精灵与障碍碰撞并反弹,但我希望障碍保持固定。我该怎么做呢?我尝试了以下方法,但均未成功:

  • 设置obstacle.physicsBody?.isDynamic = true。这使精灵穿过了障碍。
  • SKConstraint固定对象的移动和旋转。当我这样做时,他们只是互相经历。
  • 将身体的质量设置得很高,如下所示SKConstraint,但这会冻结游戏。当我将它设置得很高时,它似乎什么也没做。
  • 当对象碰撞时设置obstacle.physicsBody?.mass = CGPoint.maxFiniteMagnitude。我知道obstacle?.physicsBody.velocity = CGVector(dx: 0, dy: 0)contact.bodyA是通过值而不是引用传递的,所以我遍历带有障碍物的数组并以此方式设置速度。障碍仍然被其他精灵推动。

更新:-设置contact.bodyB以使精灵与障碍物碰撞,但不会与障碍物碰撞。

对象的设置如下,鱼是另一个精灵:

obstacle.physicsBody?.collisionBitMask = PhysicsCategory.none

请让我知道我是否做错了/误解。谢谢。

ios swift sprite-kit
1个回答
0
投票

找到答案obstacle.position = location obstacle.physicsBody = SKPhysicsBody(rectangleOf: obstacle.size) obstacle.physicsBody?.isDynamic = true obstacle.physicsBody?.categoryBitMask = PhysicsCategory.obstacle obstacle.physicsBody?.contactTestBitMask = PhysicsCategory.fish obstacle.physicsBody?.collisionBitMask = PhysicsCategory.fish obstacle.physicsBody?.usesPreciseCollisionDetection = true self.obstacles.append(obstacle) super.addChild(obstacle) 。对象之一需要具有here。在这种情况下,我将障碍物设置为.physicsBody?.isDynamic = true,因此它是固定的。

© www.soinside.com 2019 - 2024. All rights reserved.