我正在使用 SpriteKit/Swift 制作游戏,并且我想对菜单场景产生影响,在该场景中我将字符串绕圆弯曲。下图几乎正是我想要完成的。 http://www.heathrowe.com/tuts/typeonaapathimages/4.gif
最佳答案
下面的代码通过为字符串中的每个字符创建一个标签节点,将标签的位置设置为圆上的适当位置,然后旋转每个标签节点,从而将字符串中的字符环绕在圆的上半部分它与该位置的圆相切。
class GameScene:SKScene {
override func didMove(to view:SKView) {
let radius = CGFloat(50.0)
let circleCenter = CGPoint.zero
let string = "Your Text Here"
let count = string.lengthOfBytes(using: String.Encoding.utf8)
let angleIncr = CGFloat.pi/(CGFloat(count)-1)
var angle = CGFloat.pi
// Loop over the characters in the string
for (_, character) in string.characters.enumerated() {
// Calculate the position of each character
let x = cos(angle) * radius + circleCenter.x
let y = sin(angle) * radius + circleCenter.y
let label = SKLabelNode(fontNamed: "Arial")
label.text = "\(character)"
label.position = CGPoint(x: x, y: y)
// Determine how much to rotate each character
label.zRotation = angle - CGFloat.pi / 2
label.fontSize = 30
addChild(label)
angle -= angleIncr
}
}
}