gpt4 book ai didi

java - 如何在 Java 中为 2D 游戏构建 Tiled map ?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:59:07 25 4
gpt4 key购买 nike

不确定如何解决这个问题。

基本上,我想要一个 400x400 窗口的 Pixel -> Tile 表示。屏幕上的每个坐标,例如 120x300 都应该是图 block 的一部分。我最小的 Sprite 是 4 个像素,所以我们可以说 1 个图 block = 4 个像素。玩家和敌人 Sprite 都是 20 x 20,所以每个玩家/坏人将占据 5 个方 block 。

然后我想使用这个 Map 类来:

  • 通过提供图 block 的索引/id 来检索玩家/怪物 Sprite 的 x/y 坐标。

  • 知道边界在哪里,所以它不会将 Sprite 移动到 400x400 之外,从而隐藏它。

  • 碰撞检测,判断方 block 是否为空。

如何做到这一点?在此处专门讨论 x,y->tile 或 tile index->​​x,y 转换(用于适本地绘制 Sprite )。

最佳答案

首先,将仅与表示有关的像素概念与图 block 分开,图 block 是对游戏施加约束的实际游戏对象。

我发现一个解决此类问题的好方法是从草拟您想要的内容的粗略 API 开始。像这样的东西:

public class Board {
public Board (int width, int height){.. }
public boolean isOccupied(int x, int y){.. }
public void moveTo(Point from, Point to) { ..
(maybe throws an exception for outofbounds )

棋盘的所有内部单位都以图 block 为单位,而不是像素。然后可以通过一些内部乘法独立于图 block 表示从棋盘中导出像素信息-

  public Point getPixelPosition(int xTilePos, int yTilePos, int pixelsPerTile)..

瓷砖可以在内部表示为二维数组或单个数组,在这种情况下,您将使用某种内部表示方案将您的数组映射到棋盘正方形,从而使用 mod 算法。

关于java - 如何在 Java 中为 2D 游戏构建 Tiled map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622832/

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