如何在 Sprite Kit / Swift 中将文本环绕在一个圆圈中

Posted

技术标签:

【中文标题】如何在 Sprite Kit / Swift 中将文本环绕在一个圆圈中【英文标题】:How to Wrap Text Around a Circle in Sprite Kit / Swift 【发布时间】:2015-08-22 20:37:58 【问题描述】:

我正在使用 SpriteKit / Swift 制作游戏,并且我想对菜单场景产生影响,在该场景中我将字符串绕一个圆弯曲。下图几乎正是我想要完成的。 http://www.heathrowe.com/tuts/typeonaapathimages/4.gif

【问题讨论】:

【参考方案1】:

以下代码通过为字符串中的每个字符创建一个标签节点,将标签的位置设置到圆上的适当位置,然后旋转每个标签,将字符串中的字符环绕在圆的上半部分节点,使其与该位置的圆相切。

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
        
    

【讨论】:

谢谢!有没有办法轻松更改文本覆盖的圆圈范围? 是的,您需要更改angleIncrangle 的初始值。 你能创造出你想要达到的效果吗?

以上是关于如何在 Sprite Kit / Swift 中将文本环绕在一个圆圈中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sprite kit swift 中制作弹出菜单? [关闭]

使用 Swift 在 Sprite Kit 中构建棋盘游戏? [关闭]

swift 2 sprite-kit 中的多行标签?

如何使用 Swift 2(Xcode 7)在我的 Sprite Kit 游戏中为背景音乐设置静音按钮?

Swift Sprite Kit 应用内购买

使用 Swift 在 sprite kit 中的多个场景中重用相同的 sprite 节点