gpt4 book ai didi

swift SpriteKit : Use of unresolved identifier "player"?

转载 作者:行者123 更新时间:2023-11-30 14:06:22 24 4
gpt4 key购买 nike

当我尝试对 Sprite 运行操作时,我在 didMoveToView 中设置了一个常量,我在 touchesBegan 函数中使用相同的名称并得到“使用未解析的标识符:“玩家”错误。我有另一个游戏,我有完全相同的东西并且它运行完美。需要帮助!这是我的代码:

import SpriteKit

class GameScene: SKScene {

var movingGround : MCTGround!
var fruitGenerator : MCTFruitGen!
var cloudGenerator: MCTCloudGen!

var isStarted = false

override func didMoveToView(view: SKView) {

let player = SKSpriteNode(imageNamed: "koala_idle")
player.position = CGPointMake(95, 150)
addChild(player)

backgroundColor = UIColor(red: 159.0/255.0, green: 201.0/255.0, blue: 244.0/255.0, alpha: 1.0)
movingGround = MCTGround(size: CGSizeMake(view.frame.width, 20))

movingGround.position = CGPointMake(0, view.frame.size.height / 4)

addChild(movingGround)

fruitGenerator = MCTFruitGen(color: UIColor.clearColor(), size: view.frame.size)
fruitGenerator.position = view.center

addChild(fruitGenerator)

let frames = [
SKTexture(imageNamed: "koala_idle"),
SKTexture(imageNamed: "koala_walk01"),
SKTexture(imageNamed: "koala_walk02"),


]

let duration = 1.5 + drand48() * 1.0

let move = SKAction.animateWithTextures(frames, timePerFrame:0.10)
let wait = SKAction.waitForDuration(duration)
let rest = SKAction.setTexture(frames[0])
let sequence = SKAction.sequence([move, rest])

player.runAction(SKAction.repeatActionForever(sequence))

cloudGenerator = MCTCloudGen(color: UIColor.clearColor(), size: view.frame.size)
cloudGenerator.position = view.center
addChild(cloudGenerator)
cloudGenerator.populate(7)
cloudGenerator.startGeneratingWithSpawnTime(1)
}


func start() {
isStarted = true

cloudGenerator.startGeneratingWithSpawnTime(1)
}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
jumpPlayer()
movingGround.start()

fruitGenerator.startGeneratingFruitEvery(1)
}

override func update(currentTime: CFTimeInterval) {

}


func jumpPlayer() {
let jumpUpAction = SKAction.moveByX(0, y: 40, duration: 0.5)
let jumpDownAction = SKAction.moveByX(0, y: -40, duration: 0.5)

let jumpSequence = SKAction.sequence([jumpUpAction, jumpDownAction])
player.runAction(jumpSequence) // This is where my error is
}
}

最佳答案

使player成为类作用域变量(属性)。不要在函数中声明它,而是在更高的级别中声明它。

var player: SKSpriteNode?

override func didMoveToView(view: SKView) {

player = SKSpriteNode ...

然后通过player?访问它。最安全的方法。

关于 swift SpriteKit : Use of unresolved identifier "player"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32339114/

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