我的图标是节点“shelf”的子节点,而“shelf”节点是“self”(场景)的子节点。我还有一些装饰是节点“vehicle”的子节点,它也是“self”的子节点。
当将图标从架子上拖到车辆上时,图标节点将被删除,并在其位置生成装饰节点,该装饰节点将成为“车辆”而不是“架子”的子节点。这是一个问题:当装饰节点生成时,由于“货架”和“车辆”的坐标系不一致,它在场景中跳得很远。
如何将新的装饰节点从“shelf”节点中的位置转换到“vehicle”中的新位置,使其不会跳转?
(如果您需要的话,我可以发布代码,但它会很长而且很乱。)
最佳答案
假设您使用的是 Sprite Kit,则可以使用 SKNode 方法 convertPoint:toNode:
在坐标系之间转换点。
例如,一旦拖动在vehicleNode顶部结束:
CGPoint iconPos = iconNode.position; // this is position on shelf node
iconPos = [shelfNode convertPoint:iconPos toNode:vehicleNode];
// ... remove iconNode from shelfNode
// ... make new decorationNode
decorationNode.position = iconPos; // this is now position on vehicle node
// ... add decorationNode to vehicleNode
关于iOS - 将点从一个坐标系转换为另一个坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23585975/