Как переключаться между двумя анимационными состояниями для одного и того же героя, исходя из того, нажимается ли клавишJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как переключаться между двумя анимационными состояниями для одного и того же героя, исходя из того, нажимается ли клавиш

Сообщение Anonymous »

Я пишу 2D -игру в Pure Java без каких -либо подсказок, таких как использование Unreal Engine и т. Д. Причина, по которой я хочу сделать все от царапины, для учебных целей. Тем не менее, я не хочу просто копировать то, что я читаю/смотрю, но вводим изменения всякий раз, когда у меня есть идея для того, чтобы сделать определенный аспект игры более интересным. В будущем я хотел бы добавить еще больше состояний, например, например, специальное состояние после использования объектов с питанием, когда персонаж игрока может работать очень быстро или делать другие необычные вещи = каждое такое состояние является другим состоянием анимации. /> Следуя очень хорошо сделанному видео-учебнику о Java 2D, я создал простую анимацию ходьбы (= активное состояние), но я не могу добавить к нему эту непрерывную анимацию состояния (= когда не нажимаю на какую-либо ключ, который я хотел бы, чтобы мой герой просто встал и мгнул, но вместо этого программа продолжала использовать только картинки для активного состояния). Я не буду перечислять их здесь, так как это создаст очень длинный пост. Одна идея, которую я еще не проверил, состоит в том, чтобы иметь две отдельные темы в моей игре-один для каждого состояния анимации (состояние непрерывного и активного состояния), но я не уверен, что это правильное мышление, а затем, как именно мне следует реализовать две темы: создание двух методов обновлений или что? Должен ли я сосредоточиться на Method Update () или есть больше изменений в коде, необходимых для достижения моего конца?
Вот мой текущий код, который не работает. Я не смог поместить его в свой основной пост из-за проблем формата кода.public class Player extends Characters {

GamePanel gp;
public KeyInputHandler keyInputHandler;

public Player(GamePanel gp, KeyInputHandler keyInputHandler) {
this.gp = gp;
this.keyInputHandler = keyInputHandler;

setDefaults();
getPlayerImage();
}

public void setDefaults() {
x = 100;
y = 100;
speed = 4;
direction = "right";
idle = "right";
}

public void getPlayerImage() {
try {
up1 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_back_1-1.png.png")));
up2 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_back_1-2.png.png")));
up3 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_back_1-3.png.png")));
down1 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_front_2-1.png.png")));
down2 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_front_2-2.png.png")));
down3 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_front_2-3.png.png")));
down4 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_front_2-5.png.png")));
down5 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_front_2-6.png.png")));
left1 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_left_1-1.png.png")));
left2 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_left_1-2.png.png")));
left3 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_left_1-3.png.png")));
left4 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_left_1-4.png.png")));
left5 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_left_1-5.png.png")));
right1 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_right_1-1.png.png")));
right2 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_right_1-2.png.png")));
right3 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_right_1-3.png.png")));
right4 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_right_1-5.png.png")));
right5 = ImageIO.read(Objects.requireNonNull(getClass().getResourceAsStream("/Player/Tina_right_1-6.png.png")));
} catch (IOException e) {
e.printStackTrace();
e.getMessage();
}
}

public void update() {
if(!keyInputHandler.upPressed && !keyInputHandler.downPressed && !keyInputHandler.leftPressed && !keyInputHandler.rightPressed){
updateWhenIdle();
}

if (keyInputHandler.upPressed || keyInputHandler.downPressed || keyInputHandler.leftPressed || keyInputHandler.rightPressed) {
updateWhenActive();
}
}

public void updateWhenActive(){
if (keyInputHandler.upPressed) {
direction = "up";
y -= speed;
} else if (keyInputHandler.downPressed) {
direction = "down";
y += speed;
} else if (keyInputHandler.leftPressed) {
direction = "left";
x -= speed;
} else if (keyInputHandler.rightPressed) {
direction = "right";
x += speed;
}
spriteCounter++;
if (spriteCounter > 13) {
if (spriteNumber == 1) {
spriteNumber = 2;
} else if (spriteNumber == 2) {
spriteNumber = 1;
}
spriteCounter = 0;
}
}

public void updateWhenIdle(){
// if (!keyInputHandler.upPressed) {
// idle = "up";
// } else if (!keyInputHandler.downPressed) {
// idle = "down";
// } else if (!keyInputHandler.leftPressed) {
// idle = "left";
// } else if (!keyInputHandler.rightPressed) {
// idle = "right";
// }

spriteIdleCounter++;
if(spriteIdleCounter > 9){
if(spriteIdleNumber == 3){
spriteIdleNumber = 4;
}else if(spriteIdleNumber == 4){
spriteIdleNumber = 5;
}else if(spriteIdleNumber == 5){
spriteIdleNumber = 3;
}
spriteIdleCounter = 0;
}
}

public void draw(Graphics2D g2) {
//BufferedImage image_ = null;
//image_ = right1;

g2.drawImage(right1,x,y,gp.tileSize, gp.tileSize, null);
//g2.setColor(ColorUIResource.cyan);
//g2.fillRoundRect(x, y, gp.tileSize, gp.tileSize,5,4);

BufferedImage image = null;

switch(idle){
case "up":
if(spriteNumber == 3){
image = up1;
}
if(spriteNumber == 4){
image = up1;
}
if(spriteNumber == 5){
image = up1;
}
break;
case "down":
if(spriteNumber == 3){
image = down1;
}
if(spriteNumber == 4){
image = down2;
}
if(spriteNumber == 5){
image = down3;
}
break;
case "left":
if(spriteNumber == 3){
image = left1;
}
if(spriteNumber == 4){
image = left2;
}
if(spriteNumber == 5){
image = left3;
}
break;
case "right":
if(spriteNumber == 3){
image = right1;
}
if(spriteNumber == 4){
image = right2;
}
if(spriteNumber == 5){
image = right3;
}
break;
}

switch(direction) {
case "up":
if(spriteNumber == 1){
image = up2;
}
if(spriteNumber == 2){
image = up3;
}
break;
case "down":
if(spriteNumber == 1) {
image = down4;
}
if(spriteNumber == 2){
image = down5;
}
break;
case "left":
if(spriteNumber == 1){
image = left4;
}
if(spriteNumber == 2){
image = left5;
}
break;
case "right":
if(spriteNumber == 1){
image = right4;
}
if(spriteNumber == 2){
image = right5;
}
break;
}
g2.drawImage(image,x,y,gp.tileSize,gp.tileSize,null);
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... -whether-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Java 2D игра: задача переключения между двумя анимационными государствами для одного и того же героя
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как я могу назначить 5 участков 8 людям на справедливой основе, исходя из их предпочтений?
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • CSS-кнопка с двумя состояниями
    Anonymous » » в форуме CSS
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Создать XML с анимационными стрелками
    Гость » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Гость
  • Автоматически переключаться между переключателями, но также иметь возможность переключаться вручную
    Anonymous » » в форуме Jquery
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»