ios - 添加为 Sprite Action 时的路径偏移

标签 ios sprite-kit

我有一个 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 原点的偏移量完全相同。

enter image description here

我的想法是我可以使用 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。

Link

关于ios - 添加为 Sprite Action 时的路径偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569948/

相关文章:

ios - 我们可以让 2 个具有相同 bundle id 的 ios 应用程序针对不同的 ios 吗?

ios - 生成无限数量的节点并通过点击它们来销毁

ios - 如何在 Interstitial 被解散之前释放场景?

swift - SKShapeNode 笔划在使用 CGPath 绘制时显示间隙

ios - 为 iPhone 使用一组 .sks 场景,为 iPad 使用另一组是一种很好的做法吗?

ios - 雪碧包 : how to make newly spawned enemy ships shoot bullets at player?

objective-c - GPS 航向 iOS

iphone - 如何像 Interface Builder 一样调整 iOS UI 组件的大小

ios - 如何使我的类(class)符合外部协议(protocol)?它找不到它,但我的印象是我不应该在 .h 文件中导入

ios - UIGestureRecognizer 的内存管理