我有一个 SKSpriteNode
(红色方 block ),我试图让它跟随 CGPath
。路径的起始坐标(或第一个点)是红色方 block 的原点,即 [100, 50]。此坐标位于 SKView
的坐标系中,因为这就是红场所在的坐标系。
当我设置一个简单的路径时:
CGPoint newPosition = [redSquare position];
CGPathMoveToPoint(path, NULL, newPosition.x, newPosition.y);
SKAction *pathAction = [SKAction followPath:path duration:5];
[[self zombie] runAction:pathAction];
然后在模拟器中运行僵尸(绿色方 block [0,0],它是红色方 block 的父级)。这显然是在红色方 block 坐标系中添加路径,因为它的偏移量与红色方 block 距 SKView
原点的偏移量完全相同。
我的想法是我可以使用 SKView
convertPointFromView
但这似乎没有做正确的事情,如果有的话它会在错误的方向上更多地抵消僵尸。
编辑:
如果我从红场取消僵尸的父级(并将其作为 SKView 的父级,即自身),那么路径会正确定位僵尸,只是想知道是否有办法补偿这个偏移量,除了做父偏移手动?
最佳答案
要禁用偏移,只需使用扩展版本的 followPath 操作并为偏移参数传递 NO:
+ (SKAction *)followPath:(CGPathRef)path asOffset:(BOOL)offset orientToPath:(BOOL)orient duration:(NSTimeInterval)sec
因为在您使用的简短版本中:
+ (SKAction *)followPath:(CGPathRef)path duration:(NSTimeInterval)sec
offset 默认设置为 YES。
关于ios - 添加为 Sprite Action 时的路径偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569948/