| Amiga Impact

  · Accueil
  · Actualités
   · Proposer une info
  · Agenda
   · Proposer une date
  · Articles
  · Forum
  · Petites Annonces
  · Chat IRC
  · À propos du site
   · Confidentialité



 | Connexion

Identifiant :

Mot de passe :

 Mémoriser

  · Inscription
  · Mot de passe oublié



 | En ligne

Aucun membre ne se trouve actuellement sur le site




 | Nous suivre

Flux RSSGoogle+TwitterFacebook





Forum

/   Forums d'Amiga Impact
   /  Collisions sol

Accueil Forums AmigaOS, MorphOS et AROS Développement Collisions sol

Ce sujet a 4 réponses, 4 participants et a été mis à jour par  leo, il y a 1 an et 9 mois.

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

Auteur Messages   
#301304 Collisions sol
 le 19/12/2017 à 15:53


leo

Participant
  • Messages : 3492

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 ?

#301307 Répondre à : Collisions sol
 le 19/12/2017 à 16:40


AmiDARK

Participant
  • Messages : 2858

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 …

#301336 Répondre à : Collisions sol
 le 20/12/2017 à 08:36


Sadirux

Participant
  • Messages : 280

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 [email protected] - OS 3.1 MagicWB, X5000 - OS4.1 - R7 250

#301338 Répondre à : Collisions sol
 le 20/12/2017 à 10:04


thellier

Participant
  • Messages : 607

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

#301432 Répondre à : Collisions sol
 le 22/12/2017 à 11:51


leo

Participant
  • Messages : 3492

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.

                   
Derniers sujetsFraîcheur
 · Le fil des vidéos il y a 1 heure et 52 minutes
 · Saya aux platines il y a 2 heures
 · MorphOS au quotidien il y a 4 heures et 12 minutes
 · [TROUVER] plaque métallique inférieur A1200 et vis il y a 4 heures et 48 minutes
 · Vendredi 20/09/19 à 21h : 5ème soirée Chat IRC sur #amigaimpact il y a 4 heures et 49 minutes
 · Qui a déjà vu un ovni ? il y a 5 heures et 44 minutes
 · Blizzard 1240 PPC il y a 5 heures et 54 minutes
 · adaptateur µSD vers CF il y a 5 heures et 58 minutes
 · [RECHERCHE] Amstrad CPC 6128+ il y a 6 heures et 47 minutes
 · Projet A1200plus il y a 6 heures et 54 minutes





RechercheFraîcheur


Copyright © 2004-2019 Amiga Impact. Tous droits réservés. Les marques citées sont déposées par leurs propriétaires respectifs.
Conditions d'Utilisation, Politique de Confidentialité et Information sur les cookies.


Fil RSS WordPressNicolas Gressard, Conseil et développement informatique

Do NOT follow this link or you will be banned from the site!