【问题标题】:LibGdx render a sprite on top of a isometric tileLibGdx 在等轴测图块上渲染一个精灵
【发布时间】:2017-05-02 16:51:04
【问题描述】:

所以我有这张等轴测图,我想在瓷砖上绘制精灵。 但是当然,如​​果我得到了等轴测图块的位置,并且我在该位置绘制了一个精灵,它不会在图块顶部绘制,因为等轴测图是旋转的。

如果我为每个图块位置绘制一个颜色立方体......


##

所以我的问题是,我必须做些什么才能在瓷砖上绘制这个精灵? 我正在使用IsometricTiledMapRenderer

提前感谢,我整天都在寻找这个,我缺乏英语词汇对搜索没有帮助


编辑:@dfour 的回答几乎成功了。这就是现在的样子...

【问题讨论】:

    标签: libgdx isometric


    【解决方案1】:

    您需要将笛卡尔值转换为等距值。 这个Isometric Tutorial 应该会有所帮助。

    //Cartesian to isometric:
    
    isoX = cartX - cartY;
    isoY = (cartX + cartY) / 2;
    
    //Isometric to Cartesian:
    
    cartX = (2 * isoY + isoX) / 2;
    cartY = (2 * isoY - isoX) / 2;
    

    这些函数展示了如何从一个系统转换到另一个系统:

    function isoTo2D(pt:Point):Point{
      var tempPt:Point = new Point(0, 0);
      tempPt.x = (2 * pt.y + pt.x) / 2;
      tempPt.y = (2 * pt.y - pt.x) / 2;
      return(tempPt);
    }
    
    function twoDToIso(pt:Point):Point{
      var tempPt:Point = new Point(0,0);
      tempPt.x = pt.x - pt.y;
      tempPt.y = (pt.x + pt.y) / 2;
      return(tempPt);
    }
    

    【讨论】:

    • 确实有所好转,但仍然关闭,请参阅我编辑的问题,感谢您的回复!
    • 您能否提供一些或您的渲染代码,以便我可以调整我的示例以匹配您的程序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2016-06-27
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多