当我考虑anchorpoint(0.5,0.5)时,为什么我的SKSpriteNode移动了这么远



当将一个SKSpriteNode(条(放在另一个SKNode(基(上时,它会按原样出现。它的一半位于底座顶部,另一半位于底座内部。其代码为:

self.position = CGPoint(x: self.size.width/2, y: myGV.gemBaseSize.height )

结果是有意义的,因为条的锚定点是0.5 0.5。

当我考虑到锚定点时,酒吧最终会在底座上方。

self.position = CGPoint(x: self.size.width/2, y: myGV.gemBaseSize.height + (self.size.height/2))

下面是显示第一次和第二次尝试的图像,下面是条"…"的完整代码。。。代码中只有self.position行发生了更改。您可能需要放大,但左下角的图片显示条形图一半在底座上。

如果有人知道发生了什么,我真的需要一些帮助。

两次尝试的屏幕截图

以防万一,酒吧的整个代码都在这里:

import Foundation
import SpriteKit
class MyBorder : SKSpriteNode{
var nodeType = NodeType.border
init(){
//create SKSpriteNode, size it based on screen size
super.init(texture: SKTexture(imageNamed: "border"), color: .clear, size: CGSize(width: myGV.safeSceneRect.width, height: myGV.safeSceneRect.height * 0.07))
self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
self.isHidden = true
self.isUserInteractionEnabled = false
self.zPosition = theZ.border
self.alpha = 0.5
// position border on top of block
self.position = CGPoint(x: myGV.safeSceneRect.width/2, y: myGV.blockBaseSize.height)
print("Screen Size (myGV.safeSceneRect)")
print(“Block Size (myGV.blockBaseSize)")
print("Border Size (self.size)")
print("Border Pos (self.position)")
myGV.gameScene!.addChild(self)
self.isHidden = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

我的愚蠢错误。与其删除我的问题,不如给出答案,以防对其他人有所帮助。

我错误地保存了纹理文件。

它的顶部和底部都填充了透明区域

最新更新