изменение положения объектов в масштабе - PullRequest
0 голосов
/ 19 января 2010

В моей игре у меня есть самолеты, которые пролетают мимо экрана сверху вниз. когда авиакатастрофы разбиваются, я уменьшаю их, чтобы создать впечатление, будто они падают ближе к земле и дальше от экрана. У меня также есть башни на этих поделках. они являются отдельными объектами от воздушного плана. Я уменьшаю их также. Единственная проблема заключается в том, что они неправильно перемещаются. они остаются в своих положениях x и y, даже если их масштабируют, это выглядит так, как будто их отводят от воздушного самолета. можно ли правильно их переставить в зависимости от размера объекта, на котором они сидят (то есть самолеты)

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

1 Ответ

1 голос
/ 19 января 2010

Вы должны хранить все для каждого самолета внутри своего мувиклипа. Но все же полезно знать, как это сделать без встроенного scaleX / scaleY. С вашей текущей настройкой это можно сделать следующим образом (где плоскость - это ваша плоскость, масштаб - это коэффициент (между 0-1), к которому вы собираетесь масштабировать плоскость, а турель - это башня, которая должна масштабироваться относительно самолет):

function scalePlane(plane, turret, scale:Number):void {

    //scaling coordinates:
    var relativeX:Number = turret.x - plane.x;
    var relativeY:Number = turret.y - plane.y;
    var newRelativeX:Number = relativeX*scale;
    var newRelativeY:Number = relativeY*scale;
    turret.x = plane.x + newRelativeX;
    turret.y = plane.y + newRelativeY;
    //scaling size:
    turret.scaleX *= scale;
    turret.scaleY *= scale;
    plane.scaleX *= scale;
    plane.scaleY *= scale;
}

scalePlane(plane1, turret1, 0.9);
//overall scale is 0.9;
//next frame:
scalePlane(plane1, turret1, 0.9);
//now the overall scale is 0.81 because you are multiplying the scales

Я не проверял это, но это должно работать, пока у самолета и башни есть одни и те же родители. Обратите внимание, что масштаб в этом случае является относительным, поэтому вам, возможно, придется немного изменить свои вычисления. (если бы вы назвали этот код со шкалой 0,5 дважды, тогда плоскость имела бы шкалу 0,5 * 0,5 = 0,25)

...