JAVA: приключение в 2D игре. Проблема с обнаружением столкновений

#java #collision-detection #collision #adventure

#java #обнаружение столкновения #столкновение #Приключения

Вопрос:

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

Но другие в моем случае, когда idle, run и punch имеют другое измерение. Анимация пробивания, обращенная влево, стала очень странной. Должна ли его рука ударить влево, а тело сместиться вправо. Это потому, что я рисую на x и y одинаково.

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

Я использую png, потому что поддерживаю прозрачный

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

Ответ №1:

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

  1. исправляя ошибку coalision, я бы попробовал это

      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
    }
      

Я думаю, что что-то подобное должно устранить проблемы с объединением
Я рассматриваю это как игру mario на 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);
            }
      

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

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