#java #collision-detection #collision #adventure
#java #обнаружение столкновения #столкновение #Приключения
Вопрос:
Речь идет об анимации на JAVA. У меня был успех при использовании одного и того же измерения на всем изображении. Но если я сохраняю все размеры изображения на одном и том же размере (ширина и высота), я получаю некоторую ошибку, которая возникает при ударе игрока. Прежде чем рука игрока коснулась тела противника, враг умер
Но другие в моем случае, когда idle, run и punch имеют другое измерение. Анимация пробивания, обращенная влево, стала очень странной. Должна ли его рука ударить влево, а тело сместиться вправо. Это потому, что я рисую на x и y одинаково.
Как я могу это исправить? Нужны инструкции:D
Я использую png, потому что поддерживаю прозрачный
Я думаю, это можно исправить с помощью 2 варианта 1. Исправьте мое обнаружение столкновений 2. Исправьте положение моего изображения при рисовании при возникновении какого-либо условия
Ответ №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
-
Исправлена позиция рисования
//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 для того, когда ваш символ перемещается вправо.Вот как я бы попытался все сделать.