gpt4 book ai didi

swift - 在 SpriteKit swift4 Xcode 中停止运动并设置计时器来切换玩家

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

如何停止我创建的动态球,但它们在目标中,但我应该在移动一点后停止它们,这样我就可以将玩家切换到另一个目标,如果它不是目标,球在我切换时继续移动玩家们 ? 请帮忙!

最佳答案

您正在制作足球游戏或类似的游戏吗?如果是这样,您可以在 SKScene 的 Update() 函数中编写代码。我认为没有必要设置定时器。例如,如果是足球游戏,你可以用 SKPhysicsBody 构建一个球,就像在继承自 SKScene 的 GameScene 类中这样

let ballNode = SKSpriteNode(imageNamed: "ball.png")
var players: [SKSpriteNode]!

func buildBall() {
addChild(ballNode)
ballNode.name = "Ball"

ballNode.physicsBody = SKPhysicsBody(texture: ballNode.texture!, size: ballNode.size)
ballNode.physicsBody?.affectedByGravity = false
}

然后你可以使用名为velocity()的属性来移动球,如下所示:

func moveBall(velocity: CGVector) {
ballNode.physicsBody?.velocity = velocity
}

然后构建播放器:

func buildPlayers() {
for i in 0...10 {
let playerNode = SKSpriteNode(fileNamed: "player.png")
addChild(playerNode)
players.append(playerNode)
playerNode.physicsBody = SKPhysicsBody(texture: playerNode.texture!, size: playerNode.size)
playerNode.physicsBody?.affectedByGravity = false
}
}

然后你可以在update()方法中编写代码:

override func update(_ currentTime: TimeInterval) {
var nearestPlayer: SKSpriteNode!
var distance = 9999999
for player in players {
let temp = sqrt((player.position.x - ballNode.position.x) * (player.position.x - ballNode.position.x) + (player.position.y - ballNode.position.y) * (player.position.y - ballNode.position.y))// calculate the distance
if temp < distance {
nearestPlayer = player //Get the nearestPlayer
distance = temp
}
}

switchPlayer(player: nearestPlayer)//This is a switchPlayer method which I didn't defined
}

要停止球,只需将球的速度设置为 CGVector(dx: 0, dy: 0)。

关于swift - 在 SpriteKit swift4 Xcode 中停止运动并设置计时器来切换玩家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51223184/

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