gpt4 book ai didi

ios7 - SKNode convertPoint toNode & fromNode 混淆?

转载 作者:行者123 更新时间:2023-12-03 07:50:02 24 4
gpt4 key购买 nike

我对 SKNode 的方式有点困惑方法 convertPoint:fromNode:convertPoint:ToNode:正在工作,我已经查看了文档,但它们的作用并不那么明显。例如,这个(见下图)是我使用 convertPoint:fromNode: 做的一个小测试。黑色区域是 SKScene背景,蓝色区域是SKSpriteNodeSKScene 为父级,红色区域是另一个SKSpriteNode以蓝色 Sprite 为父级。两个 Sprite 的 anchor 由小绿点显示。我想要做的是获取红色 Sprite 的场景位置,我使用以下代码完成:

CGPoint positionInScene = [self convertPoint:[self position] 
fromNode:[self redSprite]];

结果是
positionInScene = [105, 205]

这正是我所期望的,因为这将是场景空间中红色方块的起源。我感到困惑的是争论。从我能猜到的:
[SKNode_A convertPoint: CGPoint_B toNode: SKScene_C]
  • SKNode_A = 要转换为 ...
  • 的节点坐标空间
  • CGPoint_B = 要转换的点(不知道为什么上面是 [self position])
  • SKNode_C = 要从 ...
  • 转换的节点坐标空间

    我最初的尝试是 [self convertPoint:[redSprite position] fromNode:redSprite]因为我想将红色 Sprite 原点转换为场景。如果有人能对这个和它的 friend 提出一点看法和逻辑,让你的头脑转过来似乎有点笨拙 convertPoint:toNode:将不胜感激。

    enter image description here

    最佳答案

    - (CGPoint)convertPoint:(CGPoint)point fromNode:(SKNode *)node
    这实质上是说:将在另一个节点的坐标系中表示的点转换为调用者的(自身)坐标系。关键是点必须在节点的坐标系中表达才能工作。如果您使用 Sprite 的位置作为点,则需要将 Sprite 的父节点作为最后一个参数传递。
    示例:获取红色方块在场景坐标系中的位置:

    CGPoint positionInScene = [self convertPoint:[redSprite position]
    fromNode:[self blueSprite]];
    blueSprite 坐标系中的 [5, 5] --> 场景坐标系中的 [105, 205]
    您的示例:
    CGPoint positionInScene = [self convertPoint:[self position] 
    fromNode:[self redSprite]];
    [0, 0] 在 redSprite 的坐标系中 --> [105, 205] 在场景的坐标系中
    你的代码得到了相同的结果,只是因为 [self position] 是 [0, 0] 并且你使用了 redSprite 的坐标系。您最初的尝试很接近,您只需要提供表示 redSprite 位置的坐标系,即父 Sprite 的坐标系;在这种情况下,那就是 blueSprite。
    - (CGPoint)convertPoint:(CGPoint)point toNode:(SKNode *)node
    这种方法与第一种方法非常相反。它会将调用者坐标系中的一个点转换为另一个节点的坐标系。这个方法的关键是给定的点必须在调用者的坐标系中表达。
    示例:假设您的场景在 [125, 225] 处收到触摸,并且您想在该位置添加一个新 Sprite ,该 Sprite 恰好位于 redSprite 的边界框内。因此,要添加一个新 Sprite 作为 redSprite 的子级,您需要在 redSprite 的坐标系中获取触摸的位置。要得到这个:
    CGPoint positionInRedSprite = [self convertPoint:touchLocation 
    toNode:[self redSprite]];
    [125, 225] 在场景坐标系中 --> 在 redSprite 坐标系中的 [20, 20]

    关于ios7 - SKNode convertPoint toNode & fromNode 混淆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863918/

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