gpt4 book ai didi

ios - 带有不受重力影响的 child 的 SKLabelNode - 不尊重 zPosition

转载 作者:行者123 更新时间:2023-11-29 12:17:34 25 4
gpt4 key购买 nike

我有一个包装类来创建一个带有一些子节点的标签节点。这是类的初始化:

let label = SKLabelNode(text: word)
let background = SKShapeNode(rectOfSize: size, cornerRadius: 0.5)
let mainNode = SKSpriteNode(color: color, size: background.frame.size)
label.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Center
label.verticalAlignmentMode = SKLabelVerticalAlignmentMode.Center
label.addChild(background)
label.addChild(mainNode)
mainNode.zPosition = 1
background.zPosition = 2
label.zPosition = 5
self.node = label

在我的主场景中,我实例化节点,设置它的物理体并设置场景的重力:

self.physicsWorld.gravity = CGVectorMake( 0, -10 );

let node = MyNode()
node.node.zPosition = 99
node.node.position.y = endOfScreenTop
if let name = node.node.name as String!, let sprite = node.node.childNodeWithName(name) as? SKSpriteNode {
node.node.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size)
node.node.physicsBody!.mass = 1.0;
node.node.physicsBody!.angularDamping = 0.0;
node.node.physicsBody!.linearDamping = 0.0;
node.node.physicsBody!.friction = 0.0;
node.node.physicsBody!.affectedByGravity = true
node.node.physicsBody!.dynamic = true
node.node.physicsBody!.allowsRotation = false
}
addChild(node.node)

我有两个问题:

  • 标 checkout 现在 SKSpriteNode 的后面,即使 zPosition 应该把它放在前面
  • SKShapeNode(只是平滑角的插图)根本没有出现
  • 所有节点都不受重力影响

附言。即使将以下内容更改为 true 也不会改变任何内容:

 skView.ignoresSiblingOrder = false

PS2。 MyNode 类具有这些属性

var node: SKLabelNode
var speed: CGFloat = 1.0
var word: String
var color: UIColor
var kind: Kind

最佳答案

假设 View Controller 中的 skView.ignoresSiblingOrder = true(默认设置),一些想法...

  1. ignoresSiblingOrder 设置为 true 时,Sprite Kit 在确定绘制节点的顺序时会忽略兄弟关系。但是,它不会影响 parent sibling 的抽奖顺序。
  2. 在任一模式下,先绘制父节点,然后渲染子节点。通常,无论父子的 zPosition 是什么,子项都会出现在父项的顶部(如果它们在同一位置)!异常(exception)情况是 child 的 zPosition 小于零。在这种情况下,子项将出现在其父项下方(即使父项的 zPosition 小于子项)。
  3. 您似乎没有设置 node.node.name 也没有设置 sprite 节点的 name。如果未设置名称,if 条件将失败并且物理体将不会附加到 node.node
  4. 形状的默认设置仅在其路径 周围绘制一个白色边框(在本例中为矩形)。您应该将其视为 Sprite 节点周围的白色轮廓。设置 background.fillColor = SKColor.greenColor() 将显示填充绿色的 SKShapeNode

关于ios - 带有不受重力影响的 child 的 SKLabelNode - 不尊重 zPosition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com