我的第一个应用程序中有基本的发射器节点。我创建了一个常量文件,它引用了我游戏中的所有节点,并将它们转换为字符串。非常适合迷你数据库。它是一个基本的打鼹鼠游戏,除了我有 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,卡通智能。我有一个发射器工作,我可以分配一个不同的发射器charFriend
,charEnemy
但我可以为每个动物分配自己的发射器,我尝试添加结构常量,没有骰子,我尝试了 if-else 语句打破每个图像但charFriend
取代它和对于charEnemy
,
这和在我的常量中为每个单独的图像添加一组声音是我的挂断。
任何的意见都将会有帮助。我已经对游戏场景进行了硬编码,第 2 版将完全在 SpriteKit 场景编辑器中完成。这是我将我的第一个应用程序提交到 App Store 之前的“Juice”的最后一次。任何指导将不胜感激。
传承永恒。
正在使用的最新软件。
一个小技巧,我在漫长的旅程中学到了,如果你让你的游戏场景与 Apple TV 通用资产 @1X 的大小相同,为所有设备优化,并且对于奇怪的 iPad 屏幕,只需将你的 BGNode 扩展一点高于参数,它就会也会自动将自身转换为适合。