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

标签 ios swift sprite-kit constants skemitternode

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

游戏场景代码

这在我的 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
}

我创建了自己的自定义类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创建了一个自定义类:

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]

        }

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

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

这以及在我的常量中为每个单独的图像添加一系列声音是我的难题。

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

永恒的遗产。

正在使用的最新软件。

我在漫长的旅程中学到的一个小技巧,如果你让你的游戏场景与针对所有设备优化的 Apple TV 通用资源 @1X 相同,并且对于奇怪的 iPad 屏幕,只需将你的 BGNode 延伸到参数之上一点它也会自动转换以适应。

最佳答案

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

I decided to use the editor, to see my results in real time.

看到您可以制作的效果类型以及操纵它们在播放屏幕上达到的范围也非常令人愉快。 Here is on created making fire, with a smoky effect at the end. Using the alpha scale, to determine how much color, shows and where, as well as how fast the color presents itself.

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

关于ios - 将不同的发射器分配给随机的不同节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34825060/

相关文章:

ios - MKpolyline 无法正确显示给定坐标

ios - 如何将 int array[] 声明为 appDelegate 中的属性

ios - Swift:寻求有关完成 Storyboard / View Controller 之间特定流程的建议

ios - 由于层次结构,无法显示由 MFMailComposeViewController 创建的页面 - Swift 4

swift - 如何通过 Action 将物体向上移动?

ios - 将 SKCameraNode 用于通用应用程序 SWIFT

ios - 防止 UIPanGesture 离开屏幕并超出其父 View 的范围 - iOS

ios - 将发布者的错误类型转换为从不合并

ios - 无法在 UITableViewController 中设置 TableView 的约束

swift - 将 Sprite 从隐藏更改为不隐藏时如何添加分数