我的敵人有問題。我做了5個,每個都獨立於另一個。但事情是 - 除了外表,它們幾乎是一樣的。他們喜歡分成一組,因爲每個人都有一個隨機的耳環機制。 我試圖使用SKConstraint來縮小它們之間的距離,但它不適合我。所以我想到了不同的方法:我想用一些東西,比如一個空的節點來代表敵人,然後它出現在一個場景中(它們就像從右邊到左邊的飛鳥中的下層管道)。在它們出現在屏幕上之前,我希望我的遊戲能夠在它們的5個節點之間隨機選擇並執行正確的動畫。因爲我的小組出現的問題將被解決。我可以使用某種容器節點代替SKSpriteNode來表示敵人嗎?
我該怎麼辦?
現在我使用他們的節點。我提供的代碼,如果它有助於:
var robot = SKSpriteNode()
let robotAtlas = SKTextureAtlas(named: "robot")
var robotArray = [SKTexture]()
robotArray.append(robotAtlas.textureNamed("robot0"));
robotArray.append(robotAtlas.textureNamed("robot1"));
然後我申請physicBodies他們
robot = SKSpriteNode(texture: robotArray[0]);
robot.position = CGPointMake(CGRectGetMaxX(self.frame), CGRectGetMidY(self.frame) - 138)
self.robot.name = "robot"
self.addChild(robot)
我怎麼能這樣做或許有其他的方法做這樣的事情?
現在,這是我的計劃: 這是隨機函數:
func random() -> UInt32 {
var range = UInt32(60)..<UInt32(200)
return range.startIndex + arc4random_uniform(range.endIndex - range.startIndex + 1)}
我對外觀的自定義類:
class EnemyAppear {
var nowAppear = false
var waitToAppear = UInt32(0)
var currentInterval = UInt32(0)
init(nowAppear:Bool, waitToAppear:UInt32, currentInterval:UInt32) {
self.nowAppear = nowAppear
self.waitToAppear = waitToAppear
self.currentInterval = currentInterval }
func shouldRun() -> Bool {
return self.appearInterval > self.waitToAppear }
然後,我有一個狀態跟蹤敵人:
var enemyStatus:Dictionary<String,EnemyAppear> = [:]
enemyStatus["robot"] = EnemyAppear(nowAppear: false, waitToAppear: random(), currentInterval: UInt32(0))
enemyStatus["drone"] = EnemyAppear(nowAppear: false, waitToAppear: random(), currentInterval: UInt32(0))
而在更新功能,我有移動它們的功能:
func enemyRun() {
for(enemy, enemyAppear) in self.enemyStatus {
var thisPet = self.childNodeWithName(enemy)!
if enemyAppear.shouldRun() {
enemyAppear.waitToAppear = random()
enemyAppear.currentInterval = 0
enemyAppear.nowAppear = true
}
if enemyAppear.nowAppear {
if thisPet.position.x > petMaxX {
thisPet.position.x -= CGFloat(self.groundSpeed)
}else {
thisPet.position.x = self.originalPetPositionX
enemyAppear.nowAppear = false
self.score++
self.scoreText.text = String(self.score)
}
}
}
我只需要設置敵人之間的距離。
我已經讀過兩次你的問題,但仍然不確定你想要達到的目標。你是否試圖將敵人移動到編隊中,或者將它們隨機產生並移出屏幕並分別移動它們? – Whirlwind
創建一個空的/清除SKSpriteNode。 – sangony
@Whirlwind現在我的程序產生了5個不同的敵人,5個不同的節點。我想讓它只產生1個敵人,你知道,像骨架一樣。我希望它從5個節點中選擇,例如從五個皮膚中選擇一個,並將其放置在該骨架上。以汽車製造廠爲例。起初汽車沒有顏色。有5種不同的顏色來繪製該車。我希望它隨機選擇那種顏色並繪製它。是否有意義? – TimurTest