【问题标题】:SKSPriteNode position changes to 0,0 for no reasonSKSPriteNode位置无故变为0,0
【发布时间】:2013-12-03 18:38:57
【问题描述】:

我在didBeginContact 方法中创建了一个SKSpriteNode 并带有联系人位置:

CommonBox *boxTwo = [[CommonBox alloc] initWithTexture:[self.mainAtlas textureNamed:@"box07"]];
boxTwo.name = @"regularBox";
boxTwo.position = contact.contactPoint;
[self addChild:boxTwo];

这里的位置是正确的。然后调用 update 方法并在 update 方法开始时神奇地将框的位置更改为 0,0,然后再执行任何代码。这是为什么? 在这两个事件之间不执行其他代码。这真让我抓狂。我尝试从该对象中删除所有碰撞和接触位掩码,但无论如何它都会变为零。对象是否合法等等。

编辑:如果我从该节点移除物理体,我将获得所需的位置。但是如果节点有物理体,我该如何设置节点的位置?

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    我发现了我的错误——你必须在设置节点位置后创建物理体。在物理体有位置之后设置位置没有任何作用。

    【讨论】:

    • 我自己也遇到了这个问题,怀疑这是一个错误,因为它只发生在更新方法中。在场景设置期间创建对象时,我设置位置的顺序无关紧要。您是否向 Apple 提交了雷达?
    • 我遇到了这个问题,因为我创建了一个 spritenode 作为子类,并且我还创建了场景内的 SKspritenode,当我在场景初始化函数之外初始化子类 sprite 节点时,位置为 0, 0,当我初始化在场景中创建的 SKspritenode 时,没关系,这没有任何意义?????
    • 谢谢,我希望我早点找到这个。就我而言,这似乎不一致。有时我的子类 SKSpriteNodes 可以在创建physicsBody 后给出位置,而其他的则不能。目前,我看不出有效和无效之间有任何区别,并将其归结为可能的框架错误。
    • 我遇到了与 Koop 相同的问题:在大多数情况下,在创建physicsBody 之后设置位置是可行的,但在某些情况下却不行。自上次发帖以来,你们有没有发现任何关于这方面的新信息?
    • 没有新信息,除了我现在在稍微不同的情况下经历过这个。我遇到了一个问题,即设置 SKSpriteNode 的位置再次被忽略。这发生在将世界节点引入我的场景以将场景集中在节点上之后。我发现只有在将节点添加到世界之后设置物理体才能使位置正常工作,而不是之前。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多