【问题标题】:Sprite Kit coordinate weird behaviorSprite Kit 协调奇怪的行为
【发布时间】:2014-07-21 03:17:53
【问题描述】:
SKSprintNode child1 = [[SKSprintNode alloc] init];
child1.position = CGPointMake(1,0);
[centreNode addChild:child1]

假设我可以以 centreNode 为中心点逆时针旋转 90 度(使用旋转动作)。现在我观察到一些奇怪的行为:

1) 旋转后,我尝试获取 child1 的位置,它仍然是 (1,0) 而不是 (0,1)。

2) 旋转后,在 didBeginContact 中,我将另一个位置为 (0, 2)child2 添加到 centreNode em>,然后在下一帧的更新方法中,我尝试获取child2的位置,它变成(2,0)(为我自动旋转! )

3) 旋转后,在一个动作完成块中(而不是在 didBeginContact 中),我添加 child2 位置为 (0,2)进入centreNode,然后在下一帧的更新方法中,我尝试获取child2的位置,它的位置没有改变,仍然(0 ,2)(没有自动服务?)

有人能解释一下吗?看来Sprit-Kit的物理引擎会自动转换坐标……

【问题讨论】:

    标签: ios sprite-kit


    【解决方案1】:

    这是正常行为,位置和旋转是相对于各自父位置的偏移量。如果只有父母的位置/旋转发生变化,孩子的位置/旋转不会改变。

    使用sknode convert methods 将位置转换为不同节点的坐标系。

    【讨论】:

    • 感谢您的回答,然后是 2) 和 3),我认为物理引擎会以某种方式转换坐标系以检测接触。
    • 是的,物理引擎内部使用通用的全局坐标系
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多