JAVA: 2D Game Adventure. Проблема обнаружения столкновений - PullRequest
2 голосов
/ 11 июня 2011

Это про анимацию в JAVA.Я имел успех при использовании одного и того же измерения на всей картине.Но если я сохраняю все размеры изображения на одном и том же размере (ширину и высоту), я получаю ошибку, которая возникает, когда игрок наносит удар.До того, как рука игрока коснулась тела врага, враг умер

Но у других в моем случае холостой ход, бег и удар имели другое измерение.Штамповка анимации лицом налево стала очень странной.Если его рука ударит влево, но его тело сместится вправо.Это потому, что я рисую на x & y одинаковы.

Как я могу это исправить?Нужны инструкции: D

Я использую прозрачную поддержку png coz

Я думаю, что это можно исправить с помощью 2 варианта 1. Исправить обнаружение столкновений 2. Исправить положение рисования моего изображения при возникновении некоторых условий

1 Ответ

2 голосов
/ 11 июня 2011

Пытаясь изобразить вашу проблему, надеюсь, это поможет.Я печатаю прямо из своей головы, поэтому могут быть ошибки в коде

  1. исправления обмана коалиции, я бы попробовал это

     Image fist
     Image enemy
        //in paint
    
    g2D.drawImage(fist,x,y,this);
    
    g2D.drawImage(enemy,x1,y1,this);
    
    Rectangle2D myFist = new Rectangle2D.Double(x,y,fist.getWidth(this),fist.getHeight(this));
    Rectangle2D myEnemy = new Rectangle2D.Double(x1,y1,enemy.getWidth(this),enemy.getHeight(this));
    if (myEnemy.contains(myFist){
    //action u want to happend
    }
    

Iдумаю, что-то вроде этого должно решить проблемы коалиции. Я вижу это как игру в sega

  1. Исправление положения рисования

    //arm image can be the same image if u want
        Image leftArm;
        Image rightArm;
        image headLegsAndTorsoLeft;
        image headLegsAndTorsoRight;
        //where am i looking in game if true i look to the leftside of user thats playing
        boolean turnedLeft
        //in paint
        if(turnedLeft){
        //this lets it look like he is turned to the left with his right arm in the visible behind his left.
        //draw right arm
        g2D.drawImage(rightArm,x,y,this);
        //draw body moved a bit in x coor
                    g2D.drawImage(headLegsAndTorsoLeft,x-3,y,this);
       // draw left arm a bit more in x coor
        g2D.drawImage(leftArm,x-6,y,this);
        }else{
         //this lets it look like he is turned to the right with his left arm in the visible behind his right.
        // draw left arm
            g2D.drawImage(leftArm,x,y,this);
         //draw body moved a bit in x coor
            g2D.drawImage(headLegsAndTorsoRight,x-3,y,this);
     //draw right arm a bit more in x coor
            g2D.drawImage(rightArm,x-6,y,this);
            }
    

    в том же порядке для анимации оружия,в конечном счете, я бы использовал различные методы анимации для туловища, левой руки, правой руки, что-то вроде нажатой клавиши, левая стрелка туловища выполняет анимацию ходьбы влево, нажатие клавиши левой руки перемещает левую руку, нажатие клавиши правой руки перемещает правую руку, то есть 3, скажем, для левой руки, теперь вам нужноеще 3, когда ваш символ перемещается вправо.

    Вот как я пытался бы это делать.

...