2010-01-19 10 views
0

Dans mon jeu, j'ai des avions qui survolent l'écran d'en haut. Lorsque les avions s'écrasent, je les redimensionne pour faire croire qu'ils tombent plus près du sol et plus loin de l'écran. J'ai aussi des tourelles sur ces métiers. ce sont des objets séparés du plan aérien. Je les redimensionne aussi. Le seul problème est qu'ils ne repositionnent pas correctement. ils restent dans leurs positions x et y même s'ils sont mis à l'échelle il semble qu'ils sont tirés loin de l'avion. est-il possible de les repositionner correctement en fonction de la taille sur l'objet sur lequel ils sont assis (les avions)repositionnement d'objets basés sur une échelle

Je viens de recevoir une bonne réponse d'un autre post pour les placer dans le MovieClip lui-même. ce qui est génial, mais pour le compte rendu, si quelqu'un connaît la réponse à cette question, ce serait génial.

Répondre

1

Vous devriez garder tout pour chaque avion dans son propre MovieClip. Mais il est toujours utile de savoir comment le faire sans l'échelle interneX/scaleY. Avec votre configuration actuelle, cela peut être fait comme ça (où le plan est votre plan, l'échelle est le facteur (entre 0 et 1) que vous allez mettre à l'échelle, et la tourelle est une tourelle qui devrait être proportionnelle au avion):

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 

Je n'ai pas testé, mais il devrait fonctionner aussi longtemps que l'avion et la tourelle ont les mêmes parents. Notez que l'échelle dans ce cas est relative, vous devrez peut-être modifier vos calculs un peu. (si vous deviez appeler ce code avec l'échelle 0.5 deux fois, le plan aurait alors une échelle de 0.5 * 0.5 = 0.25)

+0

merci. Je garde tout dans le MovieClip, mais il ne semble pas écouter ma classe de tourelle quand je le fais de cette façon. devrait-ce être ? est-ce que je fais quelque chose de mal – numerical25

+0

peu importe, je sais pourquoi maintenant. Je l'ai mis en place dans mon moteur de jeu où il n'y a qu'une seule boucle utilisée. et toutes les classes utilisent une méthode updateObject pour mettre à jour son statut à chaque image. puisque je place mes tourelles dans le MovieClip au lieu de les ajouter de cette façon, je ne peux pas travailler correctement – numerical25

+0

Seule raison pour laquelle je l'ai fait de cette façon est que je n'ai pas à m'inquiéter de détruire tous les eventlisteners et boucles displayobjects. Si j'ajoute un écouteur d'événement dans ma classe de tourelle et les ajoute directement à mon plan movieclip. seront-ils détruits quand je détruis l'avion – numerical25

Questions connexes