LibGdx,在两个向量之间画一条线,旋转不起作用

时间:2018-06-14 17:24:51

标签: libgdx

今天我想在我的游戏世界中的两点之间画一条线

我在本教程中使用批处理

绘制线条的另一种方法

https://github.com/mattdesl/lwjgl-basics/wiki/Batching-Rectangles-and-Lines

但是,我注意到我的旋转值已关闭,如下图所示。但我使用相同的计算。我引用的片段是这部分

void drawLine(int x1, int y1, int x2, int y2, int thickness) {
    int dx = x2-x1;
    int dy = y2-y1;
    float dist = (float)Math.sqrt(dx*dx + dy*dy);
    float rad = (float)Math.atan2(dy, dx);
    batch.draw(rect, x1, y1, dist, thickness, 0, 0, rad); 
}

enter image description here

该行应从蓝色开始,以红色结束。距离方面很好,但我对旋转有问题

请注意我的代码在Kotlin

                                val dx = ballPath.endX - ballPath.startX
                                val dy = ballPath.endY - ballPath.startY
                                val distance = Math.sqrt((dx * dx + dy * dy).toDouble()).toFloat()
                                val rad = Math.atan2(dy.toDouble(), dx.toDouble()).toFloat()
                                batch.draw(texture,
                                           ballPath.startX,
                                           ballPath.startY,
                                           distance / 2,
                                           TRAIL_DOT_HEIGHT_IN_PIXELS / 2,
                                           distance,
                                           TRAIL_DOT_HEIGHT_IN_PIXELS,
                                           1F,
                                           1F, 
                                           rad,
                                           0,
                                           0,
                                           texture.width,
                                           texture.height,
                                           false,
                                           false)

所以ballPath.startX和ballPath.startY是蓝色实体的位置
和ballPath.endX和ballPath.endY是红色实体的位置

大量的抽奖调用我将解释我从顶部到底部传递的内容

    1. texture
    2. ballPath.startX,
    3. ballPath.startY,
    4. distance / 2,
    5. TRAIL_DOT_HEIGHT_IN_PIXELS / 2,
    6. distance,
    7. TRAIL_DOT_HEIGHT_IN_PIXELS,
    8. 1F,
    9. 1F, 
    10. rad,
    11. 0,
    12. 0,
    13. texture.width,
    14. texture.height,
    15. false,
    16. false)

1我的资产的纹理是4x4白色方块

2和3是处于蓝色圆圈的线的起始位置

4和5是我画的原点。我没有使用纹理大小,因为我提供了自己绘制的宽度和高度

6是线条的宽度(我使用点之间的距离)使线条足够长以覆盖从头到尾

7是线的高度

8和9是scaleX和scaleY值,我使这个1(默认基本比例)使用我之前定义的大小

10轮换

11和12这与纹理区域有关。我说的是从0 0开始我传递的纹理

13和14再次与纹理区域有关,我只是传递资产的宽度和高度,因为我有兴趣绘制整个事物

15和16翻转X和Y,我不需要那样做

感谢您阅读

0 个答案:

没有答案