我正在开发一个在屏幕上应该有一个红色圆圈的应用程序。起初,当我仅测试一个场景时,圆圈看起来就很好了。但是,我添加了另一个场景,现在圆看起来像这样:


该圆在x方向上看起来更长。
这是我用来制作圆的代码(所有这些都在一个skscene中):

    let ball = Ball(circleOfRadius: 500)//ball is a subclass of SKShapeNode
    ball.setScale((self.frame.height / 6) / 1000)
    ball.position = CGPointMake(self.frame.width / 4, self.frame.height / 2)
    ball.fillColor = UIColor.redColor()
    ball.strokeColor = UIColor.clearColor()
    self.addChild(ball)


这是我用球过渡到场景的代码(不同的场景):

func transitionToGame(){
    let reveal = SKTransition.crossFadeWithDuration(1.0)
    let gameOverScene = GameScene(size: self.size)
    self.view?.presentScene(gameOverScene, transition: reveal)
}


关于为什么球不再显示为圆形的任何想法?我担心这还会使我尝试添加的其他节点中断,并且可能意味着坐标系不正确。我很高兴听到任何想法。谢谢!

最佳答案

“确定所有这些都是在skview中”您确定不是在SKScene中这样做吗?

如果确实将球直接添加到场景中,我将查看View Controller中的scene.scaleMode。多数情况下,人们将其设置为scene.scaleMode = .AspectFill,但是当您创建新场景时,并没有设置scaleMode。这就像确保两个场景具有相同的scaleMode一样容易。

我猜这将解决您的问题。

func transitionToGame(){
    let reveal = SKTransition.crossFadeWithDuration(1.0)
    let gameOverScene = GameScene(size: self.size)
    gameOverScene.scaleMode = scene.scaleMode
    self.view?.presentScene(gameOverScene, transition: reveal)
}


希望有帮助。

关于ios - SKShapeNode Circle不显示为圆形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29449164/

10-12 00:15