Траектория стрелы - PullRequest
       2

Траектория стрелы

2 голосов
/ 31 декабря 2011

Я симулирую летающую стрелу, но она выглядит не очень естественно.

Вот скриншот:

enter image description here

Якорьмувиклип со стрелкой находится в передней части стрелки, как вы можете видеть, но если я заменим его на середину, он все равно не будет выглядеть идеально, у кого-нибудь есть опыт с чем-то вроде этого?

Вотмой код тоже:

//...
//'math' isn't the default 'Math' class, it calculates some physics stuff.

private function updateArrow()
        {
            var y0:Number = 50;
            var v:Number = 100;
            var angle:Number = math.getRadians(45);

            if(!arrowstartposition)
            {
                arrowstartposition = activearrow.x;
                arrowdistance = math.calcDistance(y0,v,angle);
            }

            var currentdistance:Number = Math.abs(activearrow.x - arrowstart);

            if(currentdistance <= arrowdistance)
            {
                var currentvelocity:Number = math.calcVelocity(currentdistance, v, angle);
                var addvalue:int = 1; //Math.round(currentvelocity / 4);

                activearrow.x += addvalue;
                currentdistance += addvalue;

                var arrowheight:Number = math.calcHeight(currentdistance,y0,v,angle);
                var vx:Number = v * Math.cos(angle);
                var vy:Number = - (v * Math.sin(angle) - 9.81 * (currentdistance / arrowdistance) * math.calcTimeOfFlight(y0, v, angle));
                var currentangle:Number = Math.atan2(vy,vx);

                activearrow.y = y0 - arrowheight;
                activearrow.rotation = math.getDegrees(currentangle);
            }
            else
            {
                arrowstart = undefined;
                arrowdistance = undefined;
                activearrow = null;
            }
        }

1 Ответ

2 голосов
/ 31 декабря 2011

Я думаю, что ваш центр тяжести отключен.Стрелка не будет находиться там, где центр тяжести находится для стрелки.В противном случае это не будет очень хорошо летать.Центр тяжести стрелы будет касательным к параболе полета.Так что он будет вращаться вокруг этого центра тяжести.Попробуйте переместить его ближе к центру стрелки, и он начнет выглядеть более естественно.Если у вас все еще есть проблемы.Попробуйте бросить только камень и сделайте так, чтобы он выглядел естественно.Затем добавьте обратно в стрелку.Если он выглядит хорошо, как камень, то выглядит плохо, как стрелка, вы знаете, что движение правильное, но стрелка выключена.

...