gpt4 book ai didi

swift - SKSprite.addChild 位于位置

转载 作者:行者123 更新时间:2023-11-30 14:07:56 29 4
gpt4 key购买 nike

在 Swift 中,我有一些这样的代码:

let wand = SKSpriteNode(imageNamed: "Wand")
let item = SKSpriteNode(imageNamed: "Item")
...

func didBeginContact(contact: SKPhysicsContact) {
contact.bodyB.node!.removeAllActions()
var imageToAdd = contact.bodyB.node?.name
wand.addChild(SKSpriteNode(imageNamed: imageToAdd!))
}

我想要的是当某种类型的元素接触魔杖时,我想将其附加到魔杖上。位图蒙版已设置,所有这些都可以完美运行。但是,当 addChild 添加图像时,它位于魔杖的中心,我想控制它的添加位置。

附加信息。我正在使用物理主体来为魔杖和元素设置动画。魔杖由用户触摸屏幕来控制。我尝试了几种方法来连接两个对象 SKPhysicsJointFixed.jointWithBodyA 和 SKPhysicsJointSliding.jointWithBodyA 但无法让它按照我想要的方式工作。我认为加入两个物理体对于我正在做的事情来说有点矫枉过正,但我​​可能是错的。我真正的目标是:

1) 将一个 Sprite (魔杖)添加(或加入)到另一个 Sprite (元素)2) 允许魔杖继续由用户触摸控制(动画)3) 控制项目相对于魔杖上某个点的相对位置。

这是第三个困难的项目。感谢任何帮助,如果您需要查看更多代码,请告诉我。

最佳答案

您的第一个问题:
SKSpriteNode 的默认位置是 (0,0),因此如果将其添加到父节点,SKSpriteNode 将位于父节点坐标系的中间。如果您想将图像添加到魔杖上稍高一点的位置(假设向上 100 点),您只需输入 imageToAdd.position = CGPointMake(0,100) 即可。子节点将保持附加在该位置。当然,另一种选择是创建一个关节,如果您希望魔杖和附件具有物理属性,那么这根本就不算过分。

您的第二个问题:
只要您不将物理体从魔杖上移除,它仍然会在那里并且可以由用户控制。

您的第三个问题:
自从您将其创建为子节点以来,附加项目将具有相对于魔杖的特定位置。如果您需要移动该项目,您将创建一个SKAction。例如,如果您需要将项目沿着魔杖移动,您可以说:

moveDownWand = SKAction.moveByX(0.0, y: pointsToMoveDownBy, duration: someDuration)
attachedItem.runAction(moveDownWand)

希望这对您有所帮助,如果您有疑问,请告诉我。

关于swift - SKSprite.addChild 位于位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32115524/

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