Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 精灵套件:在循环路径中移动元素_Swift_Sprite Kit - Fatal编程技术网

Swift 精灵套件:在循环路径中移动元素

Swift 精灵套件:在循环路径中移动元素,swift,sprite-kit,Swift,Sprite Kit,我试着让一个元素沿着圆的边缘移动 我在屏幕中间创建并定位了一个圆圈: var base=SKShapeNode(circleOfRadius:200)//圆的大小 base.position=CGPointMake(frame.midX,frame.midY) base.strokeColor=SKColor.blackColor() 基本宽度=1.0 base.fillColor=UIColor(色调:1,饱和度:0.76,亮度:0.94,alpha:1) base.zPosition=0

我试着让一个元素沿着圆的边缘移动

    我在屏幕中间创建并定位了一个圆圈:
var base=SKShapeNode(circleOfRadius:200)//圆的大小
base.position=CGPointMake(frame.midX,frame.midY)
base.strokeColor=SKColor.blackColor()
基本宽度=1.0
base.fillColor=UIColor(色调:1,饱和度:0.76,亮度:0.94,alpha:1)
base.zPosition=0
self.addChild(基本)
  • 然后我创建了另一个精灵并在其上添加了一个动作:
main=SKSpriteNode(图像名为:“宇宙飞船”)
main.xScale=0.15
main.yScale=0.15
main.zPosition=1
设circle=UIBezierPath(roundedRect:CGRectMake((self.frame.width/2)-200,CGRectGetMidY(self.frame)-200400400,拐角半径:200)
让circularMove=SKAction.followPath(circle.CGPath,持续时间:5.0)
main.runAction(SKAction.repeatAction(循环移动,计数:2))
self.addChild(主)
宇宙飞船的第一次旋转(见下图)完全跟随圆的边缘,但第二次迭代会改变宇宙飞船的位置,并将其移动到屏幕边界之外。 这是正常的还是我做错了什么

谢谢

产生的效果与将
asOffset
orientToPath
参数设置为
true
的效果相同

关于文档中的偏移参数:

如果为true,则路径中的点是相对于节点位置的相对偏移 起始位置。如果为false,则节点中的点为绝对点 坐标值

因此,您应该将其显式设置为false:

let circularMove = SKAction.follow(circle.CGPath, asOffset: false, orientToPath: true, duration: 5)

我想你的回答是
false
:DHi,Sahbi。我想问你们一个问题,我们怎样才能增加两个或更多的宇宙飞船?它将沿着圆圈移动。请参考链接或任何想法。