我在将精灵定位到游戏场景中的正确点时遇到问题。至于我阅读position and anchorpoint和spritekit programming guide,应该清楚0,0位于左下角。 我只使用横向模式。
但是当我使用我的代码时:
d
我实现了非常标准的场景:
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
var ground = createGround()
self.addChild(ground)
}
func createGround()->SKSpriteNode {
var ground = SKSpriteNode(imageNamed: "ground.png")
ground.name = "ground"
ground.anchorPoint = CGPointMake(0, 0)
ground.position = CGPointMake(0, 0)
return ground
}
}
结果如下:
我的" ground.png"的尺寸为120x120。我仔细检查了场景锚点,它在(0,0)处,甚至当我在didMoveToView中设置为(0,0)时,我仍然存在同样的问题。
不知何故Y因素搞砸了。当我将地面位置设置为(0,156)时,它直接位于左下角。所以它看起来像游戏场景y-anchor-point是-36而且地面的锚点在左上方而不是左下方。任何线索为什么?
我找到almost same problem,但框架看起来很好(0.0,0.0,1024.0,768.0)。
答案 0 :(得分:0)
(.5,.5)
的精灵锚点意味着它将在放置时通过其中心定位。因此,如果它位于屏幕的左下角,则只能看到图像的上半部分和右半部分。
如果您希望图像完全适合左下角而无需额外的数学运算,请将其锚点设置为:
sprite.anchorPoint = CGPointMake(0, 1)
答案 1 :(得分:0)
这应该有所帮助。
func createGround()->SKSpriteNode {
var ground = SKSpriteNode(imageNamed: "ground.png")
ground.name = "ground"
// ground.anchorPoint = CGPointMake(0, 0) leave this at .5,.5
ground.position = CGPointMake(ground.size.width/2, ground.size.height/2)
return ground
}
并改变你的场景比例。
scene.scaleMode = .AspectFit
如果您的场景是1024 x 768并设置为AspectFill,则某些场景会被截断并且会使事情变得复杂。为了获得最佳效果,请将场景大小设置为适合iPhone的内容,但对于短期而言,Aspect fit会在屏幕上显示整个场景。无论哪种方式,你都会有一些被切断或有黑条,直到你将场景大小改为736乘414(iPhone 6 +)
因为默认情况下地面的原点位于中心,而场景的原点位于左下方,所以需要将位置移动一半宽度和地面的高度。
希望这有帮助并且有意义。