Collisions sol

5 sujets de 1 à 5 (sur un total de 5)

  • leo

      #301304

      En train de bosser sur mon propre moteur, je me demande comment étaient effectuées les collisions entre un personnage et le sol sur les jeux de plateformes à l’époque de l’Amiga.

      Je sais que l’Amiga est censé le gérer en hardware mais il me semble que cette fonctionnalité n’était pas trop utilisée.

      Dans le cas d’un sol en pente, le calcul me semble assez compliqué par rapport à un décor en tiles simple qui reste horizontal.

      Quelqu’un a une idée ?

      AmiDARK

        #301307

        Pour ma part, j’utilisais un « masque » en 2 couleurs.

        Pour éviter de faire le rendu d’un énième bitmap, les points (autour du personnage) que j’utilisais pour calculer les limites (boundaries) de collision étaient convertis :
        – Je déduisais la tile dans la map dans laquelle le point se trouvait.
        – Puis je déduisais les coordonnées X,Y à l’intérieur de la tile
        – La je regardai dans le masque de la tile si le joueu pouvait passer au travers … ou pas …

        Sadirux

          #301336

          Hello,

          Il existe une très bonne chaine YouTube pour apprendre à développer un jeu sur pico-8 (une console virtuelle). Les exemples sont concrets et les algorithmes sont bien expliqués, on peut les adapter pour l’Amiga sans trop de modification.

          Faire de la gravité dans un jeu 2D – PICO-8 :

           

          A600 - Furia 020@33Mhz - OS 3.1 MagicWB, X5000 - OS4.1 - R7 250

          thellier

            #301338

            Hello
            Je sais pas comment faisais les jeux officiels mais voici ce que j’avais fait pour un projet de jeu circa 1990 du genre Ghostn Goblins avec des niveaux horizontaux et qques plateformes sur A500 :

            la hauteur du sol était stocké dans un tableau de la largeur du niveau en pixels

            La hauteur du sol allait de 0 à 255 mais ici je vais mettre de 0 à 9 pour simplifier
            genre 00005550000 = une plateforme à l’altitude 5 de 3 pixels de long
            genre 00000123455543210000 = une colline en pente douce

            Pour faire la collision quand le perso tombe après un saut on compare au tableau à la position x du perso genre si heros.y==altitude[heros.x] alors stopper chute

            On peut avoir n lignes de niveau et comparer le héros au n lignes
            genre pour avoir n plateformes au même endroit
            01100002200006600
            00005550000002200
            00000000123000000

            heros.y==altitudes[n][heros.x]

            Quand on va à droite ou gauche le heros suit la ligne de niveau courante (celle ou il est tombé en dernier) sauf si trop de différence par rapport à son heros.y courant alors chute <==> suit les collines mais tombe des plateformes

            Evidemment on peut raffiner:
            ° ne pas mettre l’altitude à tout les pixels mais disons 1 pixels sur 4 (voire interpoler)
            ° comparer plus intelligemment que heros.y==altitude[heros.x] si la vitesse de chute est différente de 1 (genre si franchit ligne de niveaux alors s’arrêter)
            ° saisir directement les courbes de niveaux dans le jeu (utilisé comme editeur) avec le heros qui se met sur la ligne de niveaux: genre j’appuie sur 1 puis touches haut/bas pour monter la ligne de niveau 1 idem pour courbes de niveaux 1 2 3 4 5…
            genre
            if(key==’1′) {n=0;editmode=TRUE;}
            if(key==’2′) {n=1;editmode=TRUE;}
            if(editmode)
            {
            if(key==up) heros.y–;
            if(key==down) heros.y++;
            altitudes[n][heros.x]=heros.y;
            }
            puis je sauve les n tableaux de ligne de niveaux dans un fichier

            Par rapport à un système de collision de type box on ne compare la plateforme que sur un seul coté son sommet = c’est bien mieux

            leo

              #301432

              Merci pour les pistes: je vais étudier ça de près 🙂

            5 sujets de 1 à 5 (sur un total de 5)

            • Vous devez être connecté pour répondre à ce sujet.

            Forums AmigaOS, MorphOS et AROS Développement Collisions sol

            Amiga Impact