gpt4 book ai didi

Swift SpriteKit,不能多次发射子弹

转载 作者:行者123 更新时间:2023-11-28 14:37:26 26 4
gpt4 key购买 nike

我正在制作一个小游戏,其中有一艘宇宙飞船,您可以发射子弹,当我运行该程序并单击以发射子弹时,它可以运行,但是当我再次单击时它不会发射。它给了我

Thread 1: signal SIGABRT

当我尝试第二次开火时。有人可以帮助我吗?

代码如下:

import SpriteKit
import GameplayKit
import UIKit

class GameScene: SKScene {

let player = SKSpriteNode(imageNamed: "mySpaceship")
//let stars = SKSpriteNode(imageNamed: "stars")
let bullet = SKSpriteNode(imageNamed: "bullet")

override func didMove(to view: SKView) {
//print(frame.size.width)
//print(frame.size.height)

/*stars.position = CGPoint(x: self.size.width/2, y:self.size.height/2)
addChild(stars)*/
player.position = CGPoint(x:0, y:0)
player.zPosition = 2
self.addChild(player)


}

func fireBullet() {
bullet.position = player.position
bullet.zPosition = 1
self.addChild(bullet)

let moveBullet = SKAction.moveTo(y: self.size.height + bullet.size.height, duration: 1)
let deleteBullet = SKAction.removeFromParent()
let bulletSequence = SKAction.sequence([moveBullet, deleteBullet])
bullet.run(bulletSequence)


}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("Fired bullet")
fireBullet()
}

override func update(_ currentTime: TimeInterval) {
}


}

所有这些代码都在我的 GameScene.swift 文件中。谢谢!

更新:查看节点计数器后,我观察到如果我在前一颗子弹被删除后发射一颗子弹(使总节点计数为 2),子弹将正常发射。但是,如果我在上一个子弹被删除之前发射子弹(这使得节点计数为 2),程序就会崩溃。有没有办法不等上一颗子弹被删除就再射一颗子弹?

最佳答案

你只需要在 fireBullet 方法中初始化你的 Bullet Sprite 。

func fireBullet() {
// make sure you initialize bullet here.
let bullet = SKSpriteNode(imageNamed: "bullet")
bullet.position = player.position
bullet.zPosition = 1
self.addChild(bullet)

let moveBullet = SKAction.moveTo(y: self.size.height + bullet.size.height, duration: 1)
let deleteBullet = SKAction.removeFromParent()
let bulletSequence = SKAction.sequence([moveBullet, deleteBullet])
bullet.run(bulletSequence)
}

关于Swift SpriteKit,不能多次发射子弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50779607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com