Forum d'entraide à la création de jeux d'aventure
 
PortailPortail  AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
TCL C74 Series 55C743 – TV 55” 4K QLED 144 ...
Voir le deal
499 €

 

 FX : il neige ! (AGS 3.

Aller en bas 
4 participants
AuteurMessage
Asraroth
Disciple de la Grande Tasse Bleue
Disciple de la Grande Tasse Bleue
Asraroth


Nombre de messages : 1450

Age : 49

Date d'inscription : 20/10/2006


FX : il neige ! (AGS 3. Empty
MessageSujet: FX : il neige ! (AGS 3.   FX : il neige ! (AGS 3. EmptyJeu 18 Déc 2008 - 9:03

Voici une technique pour faire de la neige sans utiliser un module. On peut voir le resultat dans le Indiana Jones.
Y a peut-être plus simple (et plus propre), mais çà marche ! :ihih:
Ca peut facilement s'adapter pour faire de la pluie.

Dans le GlobalScript.ash
*** Declaration de variables globales ***
Code:

import int nb_flocons;
import int flocon_x[1000]; // absisse
import int flocon_y[1000]; // ordonnée
import int flocon_s[1000]; // vitesse
import int flocon_c[1000]; // couleur
import DrawingSurface *surface;
import DrawingSurface *backup;
import int flocons_i;
import int tempo;

Dans le script de la Room ou il neige (fonction Enter Room before fading) :
*** Initialisation des variables ***
Code:

function room_Load()
{
  nb_flocons = 500; // nombre de flocons (1000 maxi)
  tempo = 0;
  flocons_i = 0;
  while (flocons_i < nb_flocons) {
      flocon_x[flocons_i] = Random(320);
      flocon_y[flocons_i] = Random(144);
      flocon_s[flocons_i] = Random(5)+1;
      // la couleur des flocons est en fonction de leur vitesse
      if (flocon_s[flocons_i] == 1) flocon_c[flocons_i] = 200;
      if (flocon_s[flocons_i] == 2) flocon_c[flocons_i] = 210;
      if (flocon_s[flocons_i] == 3) flocon_c[flocons_i] = 225;
      if (flocon_s[flocons_i] == 4) flocon_c[flocons_i] = 230;
      if (flocon_s[flocons_i] == 5) flocon_c[flocons_i] = 245;
      if (flocon_s[flocons_i] == 6) flocon_c[flocons_i] = 255;
      flocons_i++;
  }
  surface = Room.GetDrawingSurfaceForBackground();
  backup = surface.CreateCopy();
}

Dans le GlobalScript.asc, tout en haut :
Code:

int nb_flocons;
export nb_flocons;
int flocon_x[1000];
export flocon_x;
int flocon_y[1000];
export flocon_y;
int flocon_s[1000];
export flocon_s;
int flocon_c[1000];
export flocon_c;
DrawingSurface *surface;
export surface;
DrawingSurface *backup;
export backup;
int flocons_i;
export flocons_i;
int tempo;
export tempo;

Toujours dans le GlobalScript.asc (ou on veut si la fonction repeatedly_execute_always n'a pas déjà été definie) :
*** On fait tomber chaque flocon de neige dans la fonction repeatedly_execute_always
Code:

function repeatedly_execute_always() {
  if (player.Room == ***NUMERO DE LA ROOM***) {
    tempo++;
    if (tempo >= 5) { // regle la vitesse générale de chutte de neige
      tempo = 0;
      surface = Room.GetDrawingSurfaceForBackground();
      surface.DrawSurface(backup);
      flocons_i = 0;
      while (flocons_i < nb_flocons) {
       
        bouge = Random(2); // mouvement horizontal
        if (bouge == 1) {
          flocon_x[flocons_i]++;
          if (flocon_x[flocons_i] >= 320) flocon_x[flocons_i] = 0;
        }
        if (bouge == 2) {
          flocon_x[flocons_i]--;
          if (flocon_x[flocons_i] < 0) flocon_x[flocons_i] = 319;
        }
       
        flocon_y[flocons_i] += flocon_s[flocons_i];
        if (flocon_y[flocons_i] >= 144) flocon_y[flocons_i] = 0; // 144 est le bas de l'écran
        surface.DrawingColor = Game.GetColorFromRGB(flocon_c[flocons_i], flocon_c[flocons_i], flocon_c[flocons_i]);     
        surface.DrawPixel(flocon_x[flocons_i] ,  flocon_y[flocons_i]);
        flocons_i++;
      }
      surface.Release();
    }
  }
}
Rempacer ***NUMERO DE LA ROOM*** par le numéro de la room ou il neige.
Revenir en haut Aller en bas
Shai-la
Ouvrière en Chef de la Grande Tasse Bleue
Ouvrière en Chef de la Grande Tasse Bleue
Shai-la


Nombre de messages : 6018

Age : 45

Localisation : Montpellier

Date d'inscription : 17/04/2006


FX : il neige ! (AGS 3. Empty
MessageSujet: Re: FX : il neige ! (AGS 3.   FX : il neige ! (AGS 3. EmptyJeu 18 Déc 2008 - 11:07

Ah excellent ça ! Les modules neige/pluie dispos sur le site officiel ne marchent pas toujours très bien :sourire:
Notez toutefois que le module SimpleSnow vient d'être updaté pour AGS 3 et qu'il marche très bien et est très facile d'utilisation !
Bon il ne vaut pas le plugin SnowRain qui offrait un très beau résultat, mais malheureusement il ne marche qu'en mode 640x480 et avec les anciennes versions d'AGS... :pleure:
Revenir en haut Aller en bas
http://marionpoinsot.fr/video
pilpoil
Cliqueur Amateur
Cliqueur Amateur
pilpoil


Nombre de messages : 227

Localisation : Québec!

Date d'inscription : 05/01/2009


FX : il neige ! (AGS 3. Empty
MessageSujet: Re: FX : il neige ! (AGS 3.   FX : il neige ! (AGS 3. EmptyMar 6 Jan 2009 - 22:51

Je ne sais pas si c'est moi qui a fait une erreur ou une bêtise, mais le script ne fonctionne pas car AGS ne prend pas en charge le mot 'bouge'.
Est-ce que j'ai fait quelque chose de pas correct? :??:
Revenir en haut Aller en bas
Kitai
Délégué de la tasse bleue
Délégué de la tasse bleue
Kitai


Nombre de messages : 2907

Date d'inscription : 01/08/2006


FX : il neige ! (AGS 3. Empty
MessageSujet: Re: FX : il neige ! (AGS 3.   FX : il neige ! (AGS 3. EmptyMar 6 Jan 2009 - 23:01

Effectivement il semble y avoir un problème : "bouge" apparaît pour la première fois à la ligne bouge = Random(2); // mouvement horizontal, son type n'y est pas spécifié. AGS l'analyse donc comme un mot-clé, qu'il ne connaît évidemment pas.

Il faut donc remplacer cette ligne par celle-ci :
Code:
int bouge = Random(2); // mouvement horizontal
Remarque toutefois que Asraroth a fait de ce code un module disponible ici, et sur lequel il travaille encore pour l'améliorer. :sourire:
Revenir en haut Aller en bas
http://admin.no.uchi.free.fr/dokuwiki-2008-05-05/doku.php
pilpoil
Cliqueur Amateur
Cliqueur Amateur
pilpoil


Nombre de messages : 227

Localisation : Québec!

Date d'inscription : 05/01/2009


FX : il neige ! (AGS 3. Empty
MessageSujet: Re: FX : il neige ! (AGS 3.   FX : il neige ! (AGS 3. EmptyMer 7 Jan 2009 - 0:24

Ah d'accord merci Kitai je ne le savais pas!
Et félicitations Asraroth le résultat est super!
Revenir en haut Aller en bas
Contenu sponsorisé





FX : il neige ! (AGS 3. Empty
MessageSujet: Re: FX : il neige ! (AGS 3.   FX : il neige ! (AGS 3. Empty

Revenir en haut Aller en bas
 
FX : il neige ! (AGS 3.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Coussin de neige sur chocolat/café
» Module "pluie / neige"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Adventure Games Studio fr :: CREATION DE JEUX :: Trucs & Astuces, Tutoriaux-
Sauter vers: