gpt4 book ai didi

java - 如何在 Slick2D 中向图像/ Sprite 添加碰撞?

转载 作者:行者123 更新时间:2023-12-02 11:08:53 24 4
gpt4 key购买 nike

我正在为 12 年级计算机科学课制作一款吃 bean 人游戏。

这是我迄今为止拥有的代码:

Player.java:

package javagame;

import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.state.*;

//extends BasicGameState creates a basic computer screen
public class Play extends BasicGameState {
float pacmanPosX = 218;
float pacmanPosY = 400;

Image maze;

//private SpriteSheet pacMovingLeft;
private SpriteSheet[] pacmanSprite = new SpriteSheet[4];
private Animation[] pacmanAnimation = new Animation[4];

private Animation pacman;

private int score = 0;

public Play(int state) {

}

public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
maze = new Image("res/Game/Maze.png");

pacmanSprite[0] = new SpriteSheet("res/Characters/Left-Direction.png", 19, 20);
pacmanAnimation[0] = new Animation(pacmanSprite[0], 150);

pacmanSprite[1] = new SpriteSheet("res/Characters/Right-Direction.png", 19, 20);
pacmanAnimation[1] = new Animation(pacmanSprite[1], 150);

pacmanSprite[2] = new SpriteSheet("res/Characters/Up-Direction.png", 19, 20);
pacmanAnimation[2] = new Animation(pacmanSprite[2], 150);

pacmanSprite[3] = new SpriteSheet("res/Characters/Down-Direction.png", 19, 20);
pacmanAnimation[3] = new Animation(pacmanSprite[3], 150);

pacman = pacmanAnimation[0];
}

// This is the method that draws stuff on the screen
public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
g.drawString("HIGH SCORE: ", 0, 0);
g.drawString("SCORE: ", 356, 0);

maze.draw(5, 35);
pacman.draw(pacmanPosX, pacmanPosY);
}

// Updating the images on the screen
public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
pacman.update(delta);

Input input = gc.getInput();

if(input.isKeyDown(Input.KEY_UP)) {
pacman = pacmanAnimation[2];
pacmanPosY -= delta * .1f;
} else if(input.isKeyDown(Input.KEY_DOWN)) {
pacman = pacmanAnimation[3];
pacmanPosY += delta * .1f;
} else if(input.isKeyDown(Input.KEY_LEFT)) {
pacman = pacmanAnimation[0];
pacmanPosX -= delta * .1f;
} else if(input.isKeyDown(Input.KEY_RIGHT)) {
pacman = pacmanAnimation[1];
pacmanPosX += delta * .1f;
}
}

public int getID() {
return 1;
}
}

我有一个 Menu.java 文件,可以带您进入“播放”状态,但该代码与我的问题无关。

如何向迷宫添加碰撞?我记得在 11 年级时,我使用 Phaser 开发了一款游戏,并且能够将物理和碰撞世界边界等方法/函数应用于我的图像。这允许对象从具有这些方法的图像/ Sprite 上反弹。我需要向迷宫添加一些物理特性,这样吃 bean 人就无法穿过迷宫。

最佳答案

我不会为此推荐物理模拟。那就太复杂了。当我克隆 pacman 时,我所做的是每当用户更改 pacman 的方向时,它就会存储在临时方向变量中。当 pacman 可以朝 temp 方向移动时,temp 方向就成为实际方向。检查 pacman 是否可以朝某个方向前进是一个简单的网格查找。

关于java - 如何在 Slick2D 中向图像/ Sprite 添加碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com