iOS - 将点从一个坐标系转换为另一个坐标系

标签 ios objective-c sprite-kit

我的图标是节点“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/

相关文章:

ios - 在 StackView 中动态添加 ViewControllers - UIScrollView 中的 UIStackView

ios - 哪个库允许在 map View 上管理多边形?

objective-c - iPhone 地址簿和联系人 ID?它会改变吗?

ios - 在 Objective-C 中是否有可能在运行时找到分配的对象?

swift - 为什么我的播放器通过倾斜屏幕 (SWIFT 3) 不移动 (CMMotionManager)?

ios - Spritekit 和 swift - 如何在测试期间从测试人员那里取回数据

ios - Sprite Kit - SKSpriteNode 绘制在错误的位置

ios - 我的应用程序崩溃显示消息发送到已解除分配的实例

iphone - 是否可以让 XCode 中的 Interface Builder 自动创建支持 IBAction?

ios - 如何在 Swift 中使用 Calendar nextDate 方法查找下一个小时的时间