ios - SKSpriteNode 减慢但不应该

标签 ios swift skspritenode skphysicsbody

我试图让我的“词”在屏幕上 float ;恒定速度,无冲击,无重力,无摩擦。一切正常,除了这个词变慢了。

造词代码:

func createWordNode (word: String, atPos: CGPoint) -> SKSpriteNode {

    let doneSize = CGSize(width: 50, height: 50)

    let wordSprite = SKSpriteNode()
    wordSprite.size = CGSize(width: doneSize.width * CGFloat(word.len()), height: doneSize.height)
    wordSprite.position = atPos
    wordSprite.blendMode = .replace
    wordSprite.zPosition = zlvlBG + 1

    let ltrs = Array(word.uppercased().characters)

    for i in 0 ... ltrs.count - 1 {

        let done = SKSpriteNode(imageNamed: "LetterTiles/Tile" + String(ltrs[i]) + ".png")
        done.size = doneSize
        done.position = CGPoint(x: doneSize.width * CGFloat(Double(i) - 1.5), y: 0)
        done.blendMode = .replace
        done.zPosition = zlvlBG + 1

        wordSprite.addChild(done)

    }

    wordSprite.physicsBody?.restitution = 1
    wordSprite.physicsBody?.friction = 0
    wordSprite.physicsBody?.linearDamping = 0
    wordSprite.physicsBody?.angularDamping = 0
    wordSprite.physicsBody?.mass = 2000

    wordSprite.physicsBody = SKPhysicsBody(rectangleOf: wordSprite.size)
    wordSprite.physicsBody?.collisionBitMask = 0
    wordSprite.physicsBody?.contactTestBitMask = 0
    wordSprite.physicsBody?.categoryBitMask = categoryWords
    wordSprite.physicsBody?.fieldBitMask = 0

    wordSprite.physicsBody?.isDynamic = true
    wordSprite.physicsBody?.affectedByGravity = false
    wordSprite.physicsBody?.allowsRotation = false

    var velocity = CGVector()
    velocity.dx = 100
    velocity.dy = 0
    wordSprite.physicsBody?.velocity = velocity
    wordSprite.physicsBody?.applyImpulse(velocity)

    wordSprite.name = "Word:" + word


    return wordSprite
}

我这样调用函数:

addChild (createWordNode(word: "Done", atPos: CGPoint(x:-500, y:450)))

知道为什么 word 变慢了吗? 谢谢。

最佳答案

看起来您正在创建一个不需要在物理模拟中的对象。因此,您可能需要重新考虑简单地删除与物理相关的代码并手动更新节点 position

也就是说,如果您希望此节点保留在物理模拟中。在开始尝试修改属性之前,您需要将 SKPhysicsBody 添加到 SKSpriteNode。例如

wordSprite.physicsBody = SKPhysicsBody(rectangleOf: wordSprite.size)
wordSprite.physicsBody?.restitution = 1
wordSprite.physicsBody?.friction = 0
wordSprite.physicsBody?.linearDamping = 0
wordSprite.physicsBody?.angularDamping = 0
wordSprite.physicsBody?.mass = 2000

关于ios - SKSpriteNode 减慢但不应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42873967/

相关文章:

swift - removeFromParent() 奇怪的行为

ios - SpriteKit : static background in the scene with moving SKCameraNode

将默认数据库路径更改为组路径后,iOS RealmSwift 不会更新模型

swift 3 : Nested Generic Type

ios - 无法使用WKWebView通过XMLHttpRequest加载音频文件

ios - 如何使用 Storyboard和自动布局将 UIImage 放置在顶部中心?

swift - 如何将 bool 值与数组进行比较? - swift

ios - 在 SKSpriteNode 上的两个不同 SKTextures 之间淡入淡出

ios - 如何从 UIView 内部执行 segue

ios - 核心数据文件的名称/位置在哪里?