SKSpriteNode替换为SKTexture

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SKSpriteNode替换为SKTexture相关的知识,希望对你有一定的参考价值。

我的问题是,当我玩游戏时,即使敌人没有碰到我的角色,我也会失去生命,但飞得非常接近他。我知道问题是我的角色的透明空间与敌人的透明空间接触。

我想按照SKPhysicsBody documentation的建议去做。如何使用我当前的代码实现这一点?

func madEnemy() {

    let randomNumber = Int.random(in: 1..<6)

    let enemy = SKSpriteNode(imageNamed: "enemy(randomNumber)")

    enemy.position = CGPoint(
        x: cameraRect.maxX + enemy.size.width/2,
        y: CGFloat.random(
            min: cameraRect.minY + enemy.size.height/2,
            max: cameraRect.maxY - enemy.size.height/2))
    enemy.zPosition = 50
    enemy.name = "enemy"
    addChild(enemy)

    let actionMove =
        SKAction.moveBy(x: -(size.width + enemy.size.width), y: 0, duration: 2.0)
    let actionRemove = SKAction.removeFromParent()
    enemy.run(SKAction.sequence([actionMove, actionRemove]))
}
答案

你只需要首先从你的图像创建一个SKTexture对象,然后使用该纹理创建一个SKSpriteNode,以便使用纹理来调整SKPhysicsBody或你的节点的大小。

func madEnemy() {

    let randomNumber = Int.random(in: 1..<6)

    let enemyTexture = SKTexture(imageNamed: "enemy(randomNumber)")
    let enemy = SKSpriteNode(texture: enemyTexture)
    enemy.physicsBody = SKPhysicsBody(texture: enemyTexture, size: CGSize(width: enemy.size.width, height: enemy.size.height))

    enemy.position = CGPoint(
        x: cameraRect.maxX + enemy.size.width/2,
        y: CGFloat.random(
            min: cameraRect.minY + enemy.size.height/2,
            max: cameraRect.maxY - enemy.size.height/2))
    enemy.zPosition = 50
    enemy.name = "enemy"
    addChild(enemy)

    let actionMove =
        SKAction.moveBy(x: -(size.width + enemy.size.width), y: 0, duration: 2.0)
    let actionRemove = SKAction.removeFromParent()
    enemy.run(SKAction.sequence([actionMove, actionRemove]))
}

以上是关于SKSpriteNode替换为SKTexture的主要内容,如果未能解决你的问题,请参考以下文章

我的 SKTexture 尺寸不适合我的 SKSpriteNode

如何在 SKSpriteNode 中“居中”SKTexture

如何在没有 SKTexture 的情况下更改 didBeginContact 中的 SKSpriteNode 大小和颜色?

SpriteKit SKTexture 未作为对 SKSpriteNode 的引用传递

Swift 2.0 - SKSpriteNode 的 SKTexture 有时不显示

在 SKSpriteNode 上的两个不同 SKTexture 之间淡入淡出