我目前正在试验一款游戏。我想创建 float 的“地板”或“平台”——就像你在 Doodle Jump 或 Mario 等游戏中看到的那样。我目前有 SKSpriteNodes 与线图像作为纹理。我最初将 SKPhysicsBody 设置为矩形,但线条或“地板”在碰撞时最终会扰乱我的主要 Sprite 的运动。我希望“地板”具有允许您降落在其上的属性。另外,如果你在地板下面,我想允许它这样你就可以跳过它并降落在它上面。
func addLines (){
var lineTexture = SKTexture (imageNamed: "redline.png");
var lineMovement = SKAction.moveByX(-self.frame.size.width * 2, y: 0, duration: Double(self.frame.size.width / 100));
line = SKSpriteNode (texture: lineTexture);
line.position = CGPointMake (CGRectGetMidX (self.frame) + self.frame.size.width / 3, CGFloat(random ()) % (self.frame.size.height - 30));
//line.physicsBody = SKPhysicsBody (rectangleOfSize: CGSizeMake (lineTexture.size().width, lineTexture.size().height));
//line.physicsBody!.dynamic = false;
line.runAction (lineMovement);
self.addChild (line);
}
最佳答案
您需要根据 Sprite 的状态动态更改collisionBitMask
。最好的方法是为您的平台设置一个 contactBitMask
标志。
当您的 Sprite 与您的平台接触时,您会评估平台是否在 Sprite 下方。如果平台在 Sprite 下方,则为平台启用 collisionBitMask
标志,否则移除标志
您应该能够在平台上完成这一切,I.E.平台应该根据 Sprite 的位置启用/禁用与 Sprite 的碰撞,但是 Sprite 不应该有一个到平台的collisionBitMask,因为如果你在 Sprite 上启用它,那么你就不能像垂直楼梯一样有两个彼此相邻的平台.
关于xcode - Swift:如何为我的游戏添加地板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38112655/