Последовательность TweenLite без задержки между отдельными анимациями движения - PullRequest
2 голосов
/ 13 марта 2012

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

ОДНАКО,

Существуют задержки при переходе между узлами (персонаж перемещается, затем останавливается, затем снова перемещается ...), и я не мог понять причину.Как я могу решить эту проблему?

Вот код:

    public function walk(startNode:Node,destinationNode:Node):void{
//retrieve the path of the character
            var path:Array = Pathfinder.findPath(startNode,destinationNode,GenericMap.findConnectedNodes);
            currentPath=path;
            if(path!=null){
                var pastX:Number;
                var pastY:Number;
                for(var index:int=0;index<path.length;index++)
                {
                    var currentNode:Node = path[index] as Node;
                    testMoveThroughNodes(currentNode.x,currentNode.y);
                }
            }
        }
        private var speed:Number = 0.7;
        private var timeline:TimelineLite = new TimelineLite();
        /** tween the sprite through nodes of path*/

        private function testMoveThroughNodes(targetX:Number,targetY:Number):void{
            timeline.append(new TweenLite(monster,speed,{x:targetX,y:targetY}));
        }

Я могу переключаться между последовательностями узлов TweenLite, однако они движутся, останавливаются и движутся, выглядят совершенно неестественно.

Ответы [ 2 ]

3 голосов
/ 14 марта 2012

Да, сложно сказать, не видя никакого кода, но мне интересно, если это просто проблема замедления, которая заставляет его выглядеть, как будто вещи ненадолго останавливаются, даже если это не так.Помните, что по умолчанию используется легкость Quad.easeOut, поэтому движение замедляется к концу каждой анимации (для более естественного «ощущения»).Вы можете использовать Linear.easeNone, если вы хотите линейное движение.

0 голосов
/ 13 марта 2012

Продолжайте обновлять его позицию, когда вы создаете новый путь, так что character.x и y сразу же обновляются, это ваша проблема или сама анимация, если вы создали переключатель ex ();

 var switching = 0;
 if(switching >0){
    character.animationWalk.play();
 }

 if(switching <0){
    character.animationWalk.stop();
 }

Ниже приведен файл, который я сделал для развлечения, но он хорошо проводит время и управляет анимацией в as2, но концепция та же.Прилагаются исходные файлы.

http://ffiles.com/flash/games/sonic_hd_basic_sounds_animation_and_vector_3436.html

BJM Sydney

...