Как заставить моего персонажа прыгать в 2D-играх с Java?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить моего персонажа прыгать в 2D-играх с Java?

Сообщение Anonymous »

Я делаю 2D-игру (например, Марио) на Java. У меня все хорошо, но сейчас я занят реализацией прыжка.
Это код классов Player и KeyManager:

Код: Выделить всё

package game.entity;

import game.CollisionManager;
import game.GamePanel;
import game.KeyManager;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class Player extends Entity {

GamePanel gamePanel;
KeyManager keyManager;
CollisionManager collisionManager;
public int screenX;
public int screenY;
public int maxHeight;

public Player(GamePanel gamePanel, KeyManager keyManager) {
this.gamePanel = gamePanel;
this.keyManager = keyManager;
this.collisionManager = new CollisionManager(gamePanel);

screenX = gamePanel.screenWidth / 2 - (gamePanel.tileSize / 2);
screenY = gamePanel.screenHeight / 2 - (gamePanel.tileSize / 2);

solidArea = new Rectangle(20, 0, 15, gamePanel.tileSize);

setDefaultValue();
getPlayerImage();
}

public Player() {
}

public void setDefaultValue() {
worldX = gamePanel.tileSize;
worldY = gamePanel.tileSize * 7;
maxHeight = (int) worldY;

velY = 0;
velX = 0;
jumpVelocity = 50;
speed = 3;
direction = "idle";
}

public void getPlayerImage() {
//TODO: Get player image
try {
up = ImageIO.read(getClass().getResourceAsStream("/game/textures/idle.png"));
left1 = ImageIO.read(getClass().getResourceAsStream("/game/textures/left1.png"));
left2 = ImageIO.read(getClass().getResourceAsStream("/game/textures/left2.png"));
right1 = ImageIO.read(getClass().getResourceAsStream("/game/textures/right1.png"));
right2 = ImageIO.read(getClass().getResourceAsStream("/game/textures/right2.png"));
down = ImageIO.read(getClass().getResourceAsStream("/game/textures/down.png"));
idle = ImageIO.read(getClass().getResourceAsStream("/game/textures/idle.png"));

} catch (IOException e) {
e.printStackTrace();
}
}

public void update() {
if (keyManager.jumpPressed || keyManager.downPressed || keyManager.leftPressed || keyManager.rightPressed) {
velX = 3;
velY = 2;
if (keyManager.jumpPressed && isOnPlatform()) {

worldY-=velY;

}
if (keyManager.downPressed) {
direction = "down";
}
if (keyManager.leftPressed) {
direction = "left";
}
if (keyManager.rightPressed) {

direction = "right";
}
}else {
velX = 0;
}

//Check collision
collisionOn = false;
gamePanel.collisionManager.checkTile(this);
if (!collisionOn) {
switch (direction) {
case "left":
worldX -= velX;
break;
case "right":
worldX += velX;
break;
case "down":
worldY += speed;
break;
}
}

// Animation changer
spriteCounter++;
if (spriteCounter >  15) {
spriteNumber = (spriteNumber == 1) ? 2 : 1;
spriteCounter = 0;
}
}

public void draw(Graphics2D g2) {
//g2.setColor(Color.WHITE);
//g2.fillRect(x, y, gamePanel.tileSize, gamePanel.tileSize);
BufferedImage image = null;
switch (direction) {
case "space":
image = idle;
break;
case "down":
image = down;
break;
case "left":
if (spriteNumber == 1)
image = left1;
if (spriteNumber == 2)
image = left2;
break;
case "right":
if (spriteNumber == 1)
image = right1;
if (spriteNumber == 2)
image = right2;
break;

case "idle":
image = idle;
}

g2.drawImage(image, screenX, screenY, gamePanel.tileSize, gamePanel.tileSize, null);
}

void jump() {
if (!jumping) {
jumping = true;
gravity -= 0.1;
setVelY(-gravity);
worldY -= gravity;
System.out.println(jumping);
}
if (gravity  0 ) {
worldY--;
jumpVelocity--;
}
Если кто-нибудь сможет помочь, буду признателен.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как заставить черепаху прыгать в игре?
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить игрока прыгать на высоте, основываясь на том, как долго они нажимают кнопку прыжка, не мешая входно
    Anonymous » » в форуме JAVA
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Контроллер персонажа от третьего лица (Unity) с использованием Кинематического контроллера персонажа. Когда я нажимаю кн
    Anonymous » » в форуме C#
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Обработка ввода Unicode в играх
    Гость » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Гость
  • Как сортировать игроков в головоломках/играх по раундам? с дополнительными ограничениями
    Anonymous » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

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