ios - SKSpriteNode 不显示

标签 ios swift sprite-kit

我正在为我的所有游戏 Sprite 使用一个协议(protocol),如下所示:

import SpriteKit

protocol GameSprite{

    var imageSprite : SKSpriteNode {get set}

    func spawn(parentNode: SKNode, position: CGPoint, size:CGSize)

    func onTap()

}

我然后使用以下内容创建一个乌鸦 Sprite :

    import SpriteKit

class Crow: SKSpriteNode, GameSprite{

    var imageSprite = SKSpriteNode(imageNamed: "crow.png")
    var flyAnimation = SKAction()

    func spawn(parentNode: SKNode, position: CGPoint, size: CGSize = CGSize(width: 40, height: 40)) {

        parentNode.addChild(self)
        //createAnimations()
        self.position = position
        self.size = size
        //self.runAction(flyAnimation)
    }

    func onTap() {

    }
}

最后我将 Sprite 调用到游戏场景:

let crow2 = Crow()
        crow2.spawn(world, position: CGPoint(x: 220, y: 210))

我没有收到错误,但由于某种原因, Sprite 没有显示。

最佳答案

你可以说:

func spawn(parentNode: SKNode, position: CGPoint, size: CGSize = CGSize(width: 40, height: 40)) {

        parentNode.addChild(self.imageSprite)
        //createAnimations()
        self.imageSprite.position = position
        self.imageSprite.size = size
        //self.runAction(flyAnimation)
    }

或者这个

func spawn(parentNode: SKNode, position: CGPoint, size: CGSize = CGSize(width: 40, height: 40)) {
        self.texture = SKTexture(image: image)
        parentNode.addChild(self)
        //createAnimations()
        self.position = position
        self.size = size
        //self.runAction(flyAnimation)
    }

这可能更接近您的初衷。 Crow类是SKSpritNode的子类,它实际上并不需要 Sprite 节点属性,因为它本身就是一个 Sprite 节点。如果你希望它成为一个“图像节点”,你只需要用图像对其进行纹理化即可。因此传入一个图像并设置它的纹理属性。

关于ios - SKSpriteNode 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815022/

相关文章:

swift - 如何将 Swift UI View 转换为 NSImage

ios - 带有 RxCocoa 的 UITableView 没有正确观察 contentOffset 属性

ios - 如何限制for循环中的网络调用次数?

ios - 在相机 UIImagePickerController 中收到内存警告

ios - Cordova 推送通知角标(Badge)未显示在应用程序图标 iOS 上

memory-management - 使用比较 Xcode iOS9 中的 'Other Processes' 内存不足

sprite-kit - SKFieldNode 磁节点吸引力

ios - Sprite 一旦超过屏幕高度就会自行移除

android - 在没有 Mac 的情况下使用 Xamarin 时会出现什么情况?

ios - UICollectionView viewForSupplementaryElementOfKind 调用了三次