gpt4 book ai didi

swift - 如何按角度移动 SpriteNode?

转载 作者:可可西里 更新时间:2023-11-01 01:51:04 25 4
gpt4 key购买 nike

我正在尝试创建一个小游戏,其中 SpriteNode(又名玩家)以恒定速度垂直向上移动。我想用它的角度向左或向右转向。但是,我无法使用其角度正确移动播放器。

感谢您的宝贵时间。

这是我写的部分代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let location = touch.previousLocation(in: self)
if location.x < self.size.width / 2 && location.y < self.size.height / 2 {
// Turn Left
print("TURNING LEFT")
turn(left: true)
} else if location.x >= self.size.width / 2 && location.y < self.size.height / 2 {
// Turn Right
print("TURNING RIGHT")
turn(left: false)
} else if location.y > self.size.height / 2 {
// Go Up
print("GOING UP!")
move()
}
}
}

func turn(left: Bool) {
if left {
// Turn Left
let turnAction = SKAction.rotate(byAngle: 0.1, duration: 0.05)
let repeatAction = SKAction.repeatForever(turnAction)
player?.run(repeatAction)
} else {
// Turn Right
let turnAction = SKAction.rotate(byAngle: -0.1, duration: 0.05)
let repeatAction = SKAction.repeatForever(turnAction)
player?.run(repeatAction)
}
}

func move() {
// Move Up
let moveAction = SKAction.moveBy(x: 0, y: 15, duration: 0.5)
let repeatAction = SKAction.repeatForever(moveAction)
player?.run(repeatAction)
}

最佳答案

使用三角学,您可以确定 Sprite 在任一方向上的 x 和 y 速度,从而为 Sprite 创建一个指向的角度。可以找到一篇总结如何执行此操作的好文章 here .

如果您只是想简单地旋转 Sprite ,可以通过为旋转创建一个 SKAction 并在节点上运行该 Action 来完成。

// Create an action, duration can be changed from 0 so the user can see a smooth transition otherwise change will be instant.
SKAction *rotation = [SKAction rotateByAngle: M_PI/4.0 duration:0];
//Simply run the action.
[myNode runAction: rotation];

关于swift - 如何按角度移动 SpriteNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54084519/

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