Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab

1er mars 2019 : CODELAB est de retour!

#1 2019-04-02 12:28:08 Je démarre un jeu en 3D isométrique

EricRG
membre
Lieu: Lorient
Date d'inscription: 2008-03-11
Messages: 175
Site web

Je démarre un jeu en 3D isométrique



Bonjour,

(content de  vous retrouver ! big_smile )

( Mon nouveau site internet : http://ericrogergarcia.legtux.org )

Je démarre un nouveau projet avec un ami graphiste.

Mon premier test de code :

http://codelab.fr/up/test.jpg

citation :

// Test 3D isometrique

float UNITE=25;
int tailleGrille=15;
float DECALAGE=2;
Sprite sprite=new Sprite(tailleGrille/2, tailleGrille/2);

void setup() {
  size(800, 600);
}

void draw() {
  background(0);
  pushMatrix();
  translate(400, 100);
  stroke(color(255, 0, 0));
  strokeWeight(2);
  for (int x=0; x<tailleGrille; x++) {
    PVector position1=new PVector(x, 0);
    PVector position2=new PVector(x, tailleGrille);
    position1.mult(UNITE);
    position2.mult(UNITE);
    position1=cartesianToIsometric(position1);
    position2=cartesianToIsometric(position2);
    line(position1.x, position1.y, position2.x, position2.y);
  }
  for (int y=0; y<tailleGrille; y++) {
    PVector position1=new PVector(0, y);
    PVector position2=new PVector(tailleGrille, y);
    position1.mult(UNITE);
    position2.mult(UNITE);
    position1=cartesianToIsometric(position1);
    position2=cartesianToIsometric(position2);
    line(position1.x, position1.y, position2.x, position2.y);
  }

  if (control.right) {
    sprite.positionC.y-=DECALAGE;
  }
  if (control.left) {
    sprite.positionC.y+=DECALAGE;
  }
  if (control.up) {
    sprite.positionC.x-=DECALAGE;
  }
  if (control.down) {
    sprite.positionC.x+=DECALAGE;
  }

  sprite.perform();
 
  popMatrix();
  fill(255);
  noStroke();
  rect(10,10,150,50);
  fill(0);
  text("Utiliser les flèches du\nclavier pour déplacer\nle personnage",12,20);
} // End Draw()

PVector cartesianToIsometric(PVector cartesian) {
  return new PVector(cartesian.x-cartesian.y, (cartesian.x+cartesian.y)/2);
}

class Sprite {
  PVector positionC;
  PVector positionI=new PVector();

  Sprite(float x, float y) {
    positionC=new PVector(x, y);
  }


  void perform() {

    positionI=cartesianToIsometric(positionC);
    positionI.mult(UNITE).div(frameRate);
    stroke(color(0, 255, 0));
    strokeWeight(7);
    line(positionI.x, positionI.y, positionI.x, positionI.y-40);
  }
}


Control control=new Control();


class Control {
  boolean right=false;
  boolean left=false;
  boolean up=false;
  boolean down=false;
}

void keyPressed() {
  if (key==CODED) {
    if (keyCode == LEFT) {
      control.left = true;
    }
    if (keyCode == RIGHT) {
      control.right = true;
    }
    if (keyCode == UP) {
      control.up = true;
    }
    if (keyCode == DOWN) {
      control.down = true;
    }
  }
}

void keyReleased() {
  if (key==CODED) {
    if (keyCode == LEFT) {
      control.left = false;
    }
    if (keyCode == RIGHT) {
      control.right = false;
    }
    if (keyCode == UP) {
      control.up = false;
    }
    if (keyCode == DOWN) {
      control.down = false;
    }
  }
}

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2019