2013-12-10 1 views
15

Я в основном хочу, чтобы действие было запущено, а затем в середине действия создайте эффект медленного движения, а затем выпустите его из медленного движения. Есть ли у кого-нибудь хорошие отзывы о том, как это можно сделать? Я думал о создании действия вручную и с использованием метода обновления, но я чувствую, что это может быть излишним. Я надеялся на более простое решение.Как я могу замедлить SKSpriteNode, который запускает SKAction followPath для эффекта медленного движения с помощью Sprite Kit?

Другая мысль, которую я имею, заключается в том, чтобы остановить действие, а затем запустить его еще медленнее, но я не думаю, что он останется на том же пути, и это, вероятно, будет выглядеть странно.

Это код, который я использую для создания действия.

CGMutablePathRef cgpath = CGPathCreateMutable(); 
CGPathMoveToPoint(cgpath,NULL, mysprite.position.x, mysprite.position.y); 
CGPathAddCurveToPoint(cgpath, NULL, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y); 
[mysprite runAction:[SKAction sequence:@[[SKAction followPath:cgpath asOffset:NO orientToPath:YES duration:3]]]]; 
CGPathRelease(cgpath); 

ответ

23

Каждый узел имеет свойство speed:

модификатор скорости применяется ко всем действиям, выполненных в узле и его потомками .

Обсуждение
Значение по умолчанию равно 1,0, что означает, что все действия идут при их нормальной скорости. Если вы установите другую скорость, время будет работать быстрее или медленнее для всех действий, выполняемых на узле, и его потомков . Например, если вы установите значение скорости 2.0, действия выполняются в в два раза быстрее.

Вы можете установить это значение меньше 1, чтобы заставить действие работать медленнее. Вы можете даже оживить скорость, чтобы постепенно замедляться:

[mySprite runAction:[SKAction speedTo:0.5 duration:1.0]]; 
+3

блестящий! спасибо :) 1 вещь, которую нужно отметить: продолжительность - это время, необходимое для замедления этой скорости, и это не так, как долго эта скорость будет продолжаться. – brilliantairic