我正在尝试游戏。我想创建浮动的“地板”或“平台” - 就像你在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);
}
答案 0 :(得分:1)
您需要根据精灵的状态动态更改jar
。最好的方法是为您的平台设置一个特殊的collisionBitMask
标志。
当您的精灵与您的平台联系时,您可以评估平台是否低于精灵。如果平台低于精灵,请为平台启用contactBitMask
标志,否则删除标志
你应该能够在平台上完成所有这一切,I.E。平台应根据精灵位置启用/禁用与精灵的碰撞,但精灵不应该有平台的collisionBitMask,因为如果你在精灵上启用它,那么就不能像垂直楼梯那样彼此相邻的2个平台
答案 1 :(得分:-1)
一种可能的方法是检测玩家在游戏中的位置。如果玩家的位置低于浮动地板,则只有“虚拟”地板(如图像精灵,但没有物理身体);一旦玩家的位置在地板上方,地板立即有一个物理身体。
详细实施可能会有所不同。例如,您可以存储bool以确定地板是否具有物理主体。