将不同的发射器分配给随机化的不同节点

Assigning different emitters to different nodes that are randomized

我的第一个应用程序中有基本的发射器节点。我创建了一个常量文件,它在我的游戏中引用所有节点,并将它们转换为字符串。非常适合小型数据库。这是一个基本的打地鼠游戏,除了我有 12 个不同的角色。

GameScene 代码

这是在我的 didMoveToView 方法中调用的:

 func star(pos: CGPoint) {
        let emitterNode = SKEmitterNode(fileNamed: "star.sks")
        emitterNode!.particlePosition = pos
        self.addChild(emitterNode!)
        self.runAction(SKAction.waitForDuration(2), completion:
            {emitterNode!.removeFromParent() })
    }

这是在我的 touchesDidBegin 方法中调用的:

if node.name == "charEnemy" {             
    let whackSlot = node.parent!.parent as! WhackSlot
    if !whackSlot.visible { continue }
    if whackSlot.isHit { continue }
    star(touchlocation)
    whackSlot.hit()
    ++score
}

我创建了自己的自定义 class WhackSlot 来处理 charEnemy 节点和 charFriend:

let name = Barray[Int((RandomFloat(min: 0.0, max: Float(Barray.count))))]
        charNode.texture = SKTexture(imageNamed: name)
        charNode.name = "charFriend"
        charNode.id = name

    } else {
        charNode.texture = SKTexture(imageNamed: Aarray[Int((RandomFloat(min: 0.0, max: Float(Aarray.count))))])
        charNode.name = "charEnemy"
        charNode.id = ""
    }

我为 Slot 创建了自定义 class:

import UIKit
import SpriteKit

class Slot: SKSpriteNode {

    var id:String?
}

所以它从我的常量文件中提取数据,其中纹理已转换为字符串:

struct Constants {
    struct DEV {
        static let  DEBUG = false
    }

    struct Zoo {

        struct Animal {

            struct DOG {
              static let  NAME = "dog"
               static let IMAGE = "D1" 
            }
            struct DONKEY {
                static let  NAME = "donkey"
                static let IMAGE = "D2"


            }
            struct CAT {
                static let  NAME = "cat"
                static let IMAGE = "D3"
            }

            static let Zoo = [DOG.IMAGE,DONKEY.IMAGE,CAT.IMAGE]

        }

我有它,其中图像代表 SKAction,它播放与我的常量文件相关的音频文件。我希望每个图像都有自己的发射器,而不是仅仅在触摸位置给出星星。

到目前为止我已经尝试过的事情:无尽的教程、RW、Cartoon Smart。我有一个发射器在工作,我可以为 charFriendcharEnemy 分配一个不同的发射器,但我可以为每个动物分配他们自己的发射器,我尝试添加结构常量,没有骰子,我试过if-else 语句分解每个图像,但 charFriend 取代它,charEnemy

也是如此

这和在我的常量中为每个单独的图像添加一组声音是我的挂断。

任何建议都会有所帮助。我已经对游戏场景进行了硬编码,第 2 版将完全在 SpriteKit 场景编辑器中完成。这是我 "Juice" 在将我的第一个应用程序提交到 App Store 之前的最后一次。任何指导将不胜感激。

传承永恒。

正在使用最新的软件。

一个小提示我在漫长的旅程中学到了,如果你让你的游戏场景与 Apple TV 通用资产相同大小@1X 针对所有设备优化,并且对于奇怪的 iPad 屏幕只需扩展你的BGNode 稍微高于参数,它也会自动转换为适合。

虽然认为每个 SpriteNode 可以有随机粒子是件好事,(我在图像数组中转换成字符串的位置)我发现最好的方法是分解数组中的每个单独节点。这需要使用节点创建多个游戏场景,我想让发射器单独表示。粒子也吃了不少性能,所以短爆发,看起来还是很酷,而且很有效。调整续航时间设置,达到预期效果。

看到效果的类型、您可以制作的效果以及操纵它们在播放屏幕上到达的范围也非常有趣。

我的主要课程是将节点从数组中分离出来,并在不破坏游戏体验的情况下创建不同的逻辑。