gpt4 book ai didi

ios - 坐标空间之间的转换 SpriteKit

转载 作者:行者123 更新时间:2023-11-28 22:06:04 25 4
gpt4 key购买 nike

我在场景中有一个盒子形状的节点。形状节点应该有自己的坐标空间,所以如果我在节点坐标空间中声明一个位于 (100,100) 的点并将盒子旋转 pi/4 弧度,该点应该在场景坐标空间中发生变化。

我的问题是我无法让它工作,我正在使用以下代码将节点坐标空间中的点转换为场景坐标空间,节点在场景中的位置为 200,200:

startPointInNodeSpace = CGPointMake(0, size.height/2);
CGPoint start = [self.scene convertPoint:CGPointMake(startPointInNodeSpace.x, startPointInNodeSpace.y) fromNode:self.parent];
CGPoint end = [self.scene convertPoint:CGPointMake(startPointInNodeSpace.x, startPointInNodeSpace.y + 100) fromNode:self.parent];
NSLog(@"start position in node: (%f,%f)\nend position in node: (%f,%f)",startPointInNodeSpace.x,startPointInNodeSpace.y,startPointInNodeSpace.x,startPointInNodeSpace.y + 100);
NSLog(@"start position in scene: (%f,%f)\nend position in scene: (%f,%f)",start.x,start.y,end.x,end.y);

代码在 SKSpriteNode 的子类中。

我的日志:

start position in node: (0.000000,20.000000)
end position in node: (0.000000,120.000000)
start position in scene: (0.000000,20.000000)
end position in scene: (0.000000,120.000000)

如您所见,它根本没有转换点,但我不知道我做错了什么。

我想要实现的目标的视觉说明:

Conversion

最佳答案

我认为问题在于您是从 self.parent 而不是 self 进行转换 — 节点的父 场景,所以无需进行任何转换。尝试从 self 转换:

startPointInNodeSpace = CGPointMake(0, size.height/2);
endPointInNodeSpace = CGPointMake(startPointInNodeSpace.x, startPointInNodeSpace.y + 100);
CGPoint start = [self.scene convertPoint:startPointInNodeSpace fromNode:self];
CGPoint end = [self.scene convertPoint:endPointInNodeSpace fromNode:self];

(请注意,您可以只将 startPointInNodeSpace 传递到该方法中,而不是创建一个相同的点。结构是按值复制的,因此该方法不能改变您的变量。)

关于ios - 坐标空间之间的转换 SpriteKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942664/

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