斯威夫特:如何在我的游戏中添加地板?

时间:2016-06-30 01:41:33

标签: xcode swift sprite-kit

我正在尝试游戏。我想创建浮动的“地板”或“平台” - 就像你在Doodle Jump或Mario这样的游戏中看到的那样。我目前有SKSpriteNodes,线图像作为纹理。我最初将SKPhysicsBody设置为一个矩形,但线条或“地板”最终会在碰撞时破坏我的主精灵的运动。我希望“地板”具有允许你登陆它们的属性。此外,如果你在地板下面,我想允许它,以便你可以跳过它并降落在它上面。

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);

}

2 个答案:

答案 0 :(得分:1)

您需要根据精灵的状态动态更改jar。最好的方法是为您的平台设置一个特殊的collisionBitMask标志。

当您的精灵与您的平台联系时,您可以评估平台是否低于精灵。如果平台低于精灵,请为平台启用contactBitMask标志,否则删除标志

你应该能够在平台上完成所有这一切,I.E。平台应根据精灵位置启用/禁用与精灵的碰撞,但精灵不应该有平台的collisionBitMask,因为如果你在精灵上启用它,那么就不能像垂直楼梯那样彼此相邻的2个平台

答案 1 :(得分:-1)

一种可能的方法是检测玩家在游戏中的位置。如果玩家的位置低于浮动地板,则只有“虚拟”地板(如图像精灵,但没有物理身体);一旦玩家的位置在地板上方,地板立即有一个物理身体。

详细实施可能会有所不同。例如,您可以存储bool以确定地板是否具有物理主体。