今天我想在我的游戏世界中的两点之间画一条线
我在本教程中使用批处理
绘制线条的另一种方法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);
}
该行应从蓝色开始,以红色结束。距离方面很好,但我对旋转有问题
请注意我的代码在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,我不需要那样做
感谢您阅读