Question

Pour commencer: je travaille avec Flash CS3 et Actionscript 2.0

J'essaie de refaire le jeu Frogger, et je suis un peu coincé avec le fait de mettre les voitures à l'écran.

Pour ceux qui ne connaissent pas frogger: http: // www. actionscript.org/showMovie.php?id=1157 , mais je n'implémente pas les journaux.

Le gros problème, c’est que j’ai 3 voitures, qui sont toutes des MovieClips dans la bibliothèque, je ne placerai aucune d’elles sur la scène. Plusieurs instances doivent apparaître en même temps. Ces voitures doivent rouler dans les deux sens et les 3 voitures doivent apparaître dans toutes les voies (j'ai 4 voies) Bien sûr, une voie n'a qu'une seule direction.

Je peux utiliser hitTest () pour voir si ma grenouille a touché l'une des voitures, mais je dois la rendre réaliste, ce qui signifie que je ne peux pas coder en dur le nombre de voitures sur chacune d'elles. voie.

Je n'arrive pas non plus à trouver comment faire pivoter un MovieClip autour de son centre ...

Était-ce utile?

La solution

Eh bien, il y a quelques choses que je peux suggérer.

Pour les voitures, créez chaque voiture en tant qu’objet distinct dans la bibliothèque (ne les mettez pas sur la scène). Lorsque vous en avez besoin, utilisez attachMovie () pour créer une instance de la voiture souhaitée.

Pour leur faire faire face à des directions différentes (je crois que vous avez juste besoin de gauche et de droite), vous pouvez créer 2 copies de chaque voiture dans la bibliothèque, une face à chaque direction. Ou bien, je pense que si vous définissez la valeur xScale sur -100%, je pense que le retournement sera horizontal, vous pourrez donc utiliser la même instance de la bibliothèque pour les deux. Cependant, il serait probablement plus facile de traiter si vous aviez des instances de bibliothèque distinctes pour chaque direction, au lieu de faire des rotations dans une direction.

Autres conseils

Pour répondre à votre question sur la rotation, les clips tournent autour de leur point d’enregistrement, pas autour de leur centre visuel. Ainsi, lorsque vous créez vos clips, assurez-vous que les réticules de l'écran d'édition des symboles apparaissent au centre. Le réticule est le point d’inscription, qui définit en gros l’emplacement de x: 0, y: 0 sur le clip.

Il semble que votre question porte vraiment sur l'utilisation de hitTest pour savoir si la grenouille a heurté une des voitures, quel que soit le modèle, combien sont sur scène, etc. Donc, je créerais une classe pour la voiture avec un membre statique qui peut être un pointeur sur la grenouille, puis demandez à la classe de vérifier si elle frappe la grenouille.

Donc pour commencer:

public class Car extends MovieClip{     
    public static var frog:MovieClip;
    private var interval;
    public function Car(){
        super();
        interval = setInterval(checkHit,500);
    }
    private function checkHit(){
            if(this.hitTest(frog)){
            trace("the frog hit the car");
            clearInterval(interval);
            //do what you need to do when the frog gets hit 
        }
    }
}

Pour chaque voiture, vous pouvez étendre la classe de voiture:

class Truck extends Car{
    public function Truck(){
        super();
    }
}

class Volkswagen extends Car{
    public function Volkswagen(){
        super();
    }
}

class Bus extends Car{
    public function Bus(){
        super();
    }
}

Après avoir créé les classes individuelles, utilisez la liaison dans les symboles de votre bibliothèque pour chaque voiture. (Cliquez avec le bouton droit sur le symbole, sélectionnez Liaison et tapez le nom de votre classe dans le champ Classe).

Enfin, définissez le membre grenouille sur votre grenouille sur scène

var frog:MovieClip = attachMovie("frog_mc", frogMC, _root.getNextHighestDepth())
Car.frog = frog; //set the static var "frog" to your frog instance

Et maintenant, vos voitures devraient toutes vérifier si elles frappent la grenouille.

L’autre option consiste à coder la fonction checkHit () sur la première image de chaque clip de voiture différent, plutôt que d’utiliser des classes pour chaque:

this.onEnterFrame = function(){
    if(this.hitTest(_root.frog)){
        trace("the frog hit the car");
        //do what you need to do when the frog gets hit 
        delete this.onEnterFrame;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top