You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Cascadia游戏自定义坐标转换为JavaFx场景实际坐标?

六边形Tile坐标转JavaFX场景坐标实现

首先明确核心参数:你的Tile宽度为100px,六边形垂直方向的行间距为 100 * √3 / 2 ≈ 86.6px,这是六边形网格布局的关键计算值。

根据你描述的“左右移动Tile可直接加减100像素”,推测你的自定义Point是列-行式的偏移坐标(col, row),以下是两种常见偏移规则的转换方案:

方案1:偶行偏移(偶数行Tile向右偏移半宽)

这是最常用的六边形网格布局,偶数行的Tile相对于奇数行向右偏移50px(半宽):

import javafx.geometry.Point2D;

// 定义常量
private static final double TILE_WIDTH = 100.0;
private static final double TILE_ROW_SPACING = TILE_WIDTH * Math.sqrt(3) / 2; // ~86.6px

// 自定义Point假设包含col和row属性
public Point2D toSceneCoords(Point customPoint) {
    int col = customPoint.getCol();
    int row = customPoint.getRow();
    
    // 计算X坐标:列宽*列数 + 偶行偏移量
    double sceneX = col * TILE_WIDTH + (row % 2 == 0 ? 0 : TILE_WIDTH / 2);
    // 计算Y坐标:行间距*行数
    double sceneY = row * TILE_ROW_SPACING;
    
    // 如果需要以Tile中心为坐标基准(而非左上角),取消下面两行注释:
    // sceneX += TILE_WIDTH / 2;
    // sceneY += TILE_ROW_SPACING / 2;
    
    return new Point2D(sceneX, sceneY);
}

方案2:奇行偏移(奇数行Tile向右偏移半宽)

如果你的网格是奇数行偏移,只需调整X坐标的判断逻辑:

double sceneX = col * TILE_WIDTH + (row % 2 != 0 ? 0 : TILE_WIDTH / 2);

网格居中调整

JavaFX场景原点在左上角,若要让整个六边形网格居中显示,可在转换后的坐标上添加全局偏移:

// 假设场景宽高为800px*600px,先计算网格的最大X/Y坐标
double maxGridX = getMaxCol() * TILE_WIDTH + TILE_WIDTH / 2;
double maxGridY = getMaxRow() * TILE_ROW_SPACING;

// 计算居中偏移量
double offsetX = (800 - maxGridX) / 2;
double offsetY = (600 - maxGridY) / 2;

// 应用偏移
Point2D centeredCoords = new Point2D(sceneX + offsetX, sceneY + offsetY);

轴向坐标适配(如果你的自定义Point是q/r轴向坐标)

若你的Point采用六边形轴向坐标系统(q, r),转换公式如下:

public Point2D toSceneCoords(Point customPoint) {
    int q = customPoint.getQ();
    int r = customPoint.getR();
    
    double sceneX = TILE_WIDTH * (1.5 * q + 0.5 * r);
    double sceneY = TILE_ROW_SPACING * r;
    
    // 中心基准偏移(可选)
    sceneX += TILE_WIDTH / 2;
    sceneY += TILE_ROW_SPACING / 2;
    
    return new Point2D(sceneX, sceneY);
}

内容的提问来源于stack exchange,提问作者st3ems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:06:33