Proggen bis was draus wird
 
StartseiteKalenderFAQSuchenAnmeldenLogin

Austausch | 
 

 Animationen

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
mercury
Admin
avatar

Anzahl der Beiträge : 343
Punkte : 473
Anmeldedatum : 02.12.09
Alter : 33

BeitragThema: Animationen   Mi Mai 30, 2012 11:05 am

Wir besprechen das später genauer, ich hab mich kuz mal mit der Animation auseinander gesetzt, nichts wildes, ich habe meinen bereits animierten Sprite eingefügt. Der eine Smilie sie

Hier erstmal der neue Sprites Ordner:
www.mercuryproductions.de/wu/programmiergruppe/sprites.zip

Hier der Code, da BitBucket ja leider nicht mehr zugänglich ist...:

Code:

/*alle bisherigen Imports*/

public class AdvTest extends Game{

   private BufferedImage testSheet1;

//wir legen arrays für jede Bewegung an, "idle habe ich bislang außer Art gelassen)
   private BufferedImage[] heroFront = new BufferedImage[4];
   private BufferedImage[] heroBack = new BufferedImage[4];
   private BufferedImage[] heroLeft = new BufferedImage[4];
   private BufferedImage[] heroRight = new BufferedImage[4];
   private BufferedImage[] heroShootFront = new BufferedImage[4];
   private BufferedImage[] heroShootBack = new BufferedImage[4];
   private BufferedImage[] heroShootLeft = new BufferedImage[4];
   private BufferedImage[] heroShootRight = new BufferedImage[4];

//frame ist für die Animation
   private static int frame=0;

   private int xstart;
   private int ystart;
   private int xend;
   private int yend;
   private int figposx;
   private int figposy;
   
   private boolean shoot;
   private int shotposx, shotposy;
   
   
   private int enemy;
   private int enemyposx;
   private int enemyposy;
   
   
   public AdvTest(){
      title = "AdvTest";
      width = 800;
      height = 600;
      xstart = 0;
      ystart = 0;
      figposx = 350;
      figposy = 250;
//angepasste Bildabmessungen
      xend = figposx+60;
      yend = figposy+90;
   }
   
   public static void main(String[] args) {
      GameApplication.start(new AdvTest());

   }
   private boolean collision(int x, int y){
      if(x >= enemyposx && x <= enemyposx+77 && y >= enemyposy && y <= enemyposy+122)
      return true;
      
      return false;
   }

   public void mousePressed(MouseEvent e) {
      int x = e.getX();
      int y = e.getY();
      if(collision(x,y)){
         shoot = true;
//TODO: Anpassen
         shotposx=figposx+81;
         shotposy=figposy+49;
      }else{
         xend = x;
         yend = y;
      }
   }
   
   @Override
   public void update() {

//berechnung von frame für die Animation   
      if(frame <39)frame++;
      else frame=0;
      
      //enemy
      if (xstart == -100 || xstart == -101){
         enemy++;
         enemyposx = 0;
         enemyposy = 0;
      }
      //enemy movement
      if(enemyposx < figposx)enemyposx++;
      if(enemyposx > figposx)enemyposx--;
      if(enemyposy < figposy)enemyposy++;
      if(enemyposy > figposy)enemyposy--;
      
      //movement mit angepassten Bildabmessungen
      if(figposx+60 < xend){
         xstart -= 2;
         xend -= 2;
      }else if(figposx+60 > xend){
         xstart += 2;
         xend += 2;
      }
      if(figposx+42 - xend == 1) xend++;
      else if(figposx+42 - xend == -1) xend--;

      if(figposy+90 < yend){
         ystart -= 2;
         yend -= 2;
      }else if(figposy+90 > yend){
         ystart += 2;
         yend += 2;
      }
      if(figposy+90 - yend == 1) yend++;
      else if(figposy+90 - yend == -1) yend--;
      /*
      double xVel = xend - xstart;
        double yVel = yend - ystart;
        double mag = Math.sqrt(xVel * xVel + yVel * yVel);
        xVel = xVel * 2 / mag;
        yVel = yVel * 2 / mag;

        if (xstart < xend && (xstart + xVel) > xend) {
           xstart = xend;
        } else if (xstart != xend) {
           xstart += xVel;
        }
        if (ystart < yend && (ystart + yVel) > yend) {
           ystart = yend;
        } else if (ystart != yend) {
           ystart += yVel;
        }
      */
      //shoot
      if(shoot){
         if(shotposx < enemyposx)shotposx+=4;
         if(shotposx > enemyposx)shotposx-=4;
         if(shotposy < enemyposy)shotposy+=4;
         if(shotposy > enemyposy)shotposy-=4;
         if(collision(shotposx,shotposy)){
            enemy--;
            shoot=false;
         }
      }
   }

   @Override
   public void draw(Graphics g) {
      g.drawImage(testSheet1, xstart, ystart, null);
//hier findet die Amgie statt, je nachdem wo er sich bewegt wird ein anderes Array abgerufen.
//dabei wird der frame alle 10 Durchgänge gewechselt
      if(yend > figposy+90 && yend-figposy+90 > xend-figposx){
         g.drawImage(heroFront[frame/10], figposx, figposy, null);
      }else if(yend < figposy+90 && yend-figposy+90 > xend-figposx){
         g.drawImage(heroBack[frame/10], figposx, figposy, null);
      }else{
         g.drawImage(heroFront[0], figposx, figposy, null);
      }
      if(enemy != 0){
         g.drawImage(testSheet1.getSubimage(207, 1021, 77, 122), enemyposx, enemyposy, null);
      }
      if(shoot){
         g.drawImage(testSheet1.getSubimage(2, 1010, 8, 8), shotposx, shotposy, null);
      }
   }

   @Override
   public void init() {
      try {
//das füllen der Arrays, da fehlt noch einiges.
         heroFront[0] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-front-1.png"));
         heroFront[1] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-front-2.png"));
         heroFront[2] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-front-3.png"));
         heroFront[3] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-front-4.png"));
         heroBack[0] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-back-1.png"));
         heroBack[1] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-back-2.png"));
         heroBack[2] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-back-3.png"));
         heroBack[3] = ImageIO.read(AdvTest.class.getResource("/sprites/Hero-back-4.png"));
         //add more
         testSheet1=ImageIO.read(AdvTest.class.getResource("/sprites/testSheet1.png"));
      }catch(IOException e){
         System.out.println(e);
      }
         
   }

}


uuuh, sorry wegen der Farbton ist so im Template, ich werds bei Zeiten ändern. alien

_________________
Nach oben Nach unten
http://enohd.wordpress.com/
 
Animationen
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Animationen für Sims

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
e - NOHD :: Programming :: Code-
Gehe zu: