【发布时间】:2014-05-30 08:27:48
【问题描述】:
我在场景中有一个盒子形状的节点。形状节点应该有自己的坐标空间,所以如果我在节点坐标空间中声明一个位于 (100,100) 的点并旋转框 pi/4 rad,那么该点应该在场景坐标空间中发生变化。
我的问题是我不能让它工作,我正在使用以下代码将节点坐标空间中的一个点转换为场景坐标空间,节点在场景中的位置是 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)
如您所见,它根本没有转换积分,但我不知道我做错了什么。
我想要实现的视觉插图:
【问题讨论】:
-
self是这里的蓝框,还是蓝框的子项? -
self 是蓝色框,它是一个位置 = 200,200 的 SKSpriteNode。它是场景的孩子
标签: ios iphone sprite-kit floating-point-conversion