【发布时间】:2021-03-04 07:43:32
【问题描述】:
在将一个 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")
}
}
【问题讨论】:
-
这篇文章stackoverflow.com/questions/1968017/…中有很多关于锚点的有用信息。我很久以前遇到过类似的问题,如果我没记错的话,我在这里的某个地方找到了我的解决方案。
-
@bsod 阅读。我不认为这是一个锚点问题。就像我说的那样,第一个结果完全有意义(条在中间的地方)。据我所知,我所做的调整是正确的。
标签: swift sprite-kit skspritenode