xcode - Swift:如何为我的游戏添加地板?

标签 xcode swift sprite-kit

我目前正在试验一款游戏。我想创建 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/

相关文章:

ios - 发送到新的View Controller的数据为nil,展开了一个可选值

ios - 为什么我的 iOS 应用程序无法进行翻页?

ios - Xcode 跳转到书签或断点

ios - 有没有办法将 AVSpeechBoundary 设置为某个值或者在句子完成之后?

ios - 检测圆何时真正与节点相交

ios - .showsPhysics 的内存泄漏

swift - 从 NSTimeInterval 转换为天

ios - Swift & SceneKit 3D 多色四面体

ios - WKWebView 在 iOS 11 之前导致语法错误

ios - 在 GameScene.sks 中制作 Sprite 并在代码中访问它