当前位置: 首页 > 知识库问答 >
问题:

在box2d主体顶部绘制字体

贡正诚
2023-03-14

如何在静态box2d主体上绘制文本(字体)?

背景:我能够正确地在身体顶部绘制精灵。我这样做是通过有一个box 2dSpriteBatch,它被投影在box 2dCamera上,就像box 2dSpriteBatch.set投影矩阵(box 2dCamera.combined);然后简单地使用身体的getPotion在正确的位置渲染精灵。

但是如果我尝试用同样的方法来处理字体,不幸的是,它的缩放非常大,如果我尝试缩放字体,它就不会出现。所以我假设我需要在窗口坐标而不是box 2d中绘制文本。

我的尝试:

>

  • 在show()中:windowCamera=新的正交摄像头(Gdx.graphics.getWidth(),Gdx。图样getHeight())

    在我的渲染方法中,我调用windowSpriteBatch。setProjectionMatrix(windowCamera.combined)

    同样在渲染中,我渲染字体

    WhiteFont.setScale(0.7f,0.7f);sb.begin(); WhiteFont.draw(sb,"2",body.get位置(). x,(问题线Body.get位置(). y)*PPM);<--plhd--5/ >();


  • 共有1个答案

    苏凯
    2023-03-14

    解决方案是基本上用PPM来确定我的x位置。

    比如。

    将以下线条添加到渲染方法:

    windowCamera.position.y = box2dCamera.position.y * PPM;
    windowCamera.update();
    windowSpriteBatch.setProjectionMatrix(windowCamera.combined);
    

    并按如下方式呈现字体:

    whiteFont.draw (sb,"2", body.getPosition().x * PPM, body.getPosition().y * PPM);
    
     类似资料:
    • 我能得到一个如何让图像出现在box 2d主体上的简单答案吗?我试着为图像和主体制作一个x和y int,但是一旦主体移动,图像就会保持静态。如果你回答了,请尽可能解释代码。如果你对我的完整源代码感兴趣,请查看我的帖子:http://www.java-gaming.org/topics/libgdx-drawing-a-sprite-on-to-a-box2d-body/33894/msg/31992

    • parameter.size=30; parameter.characters=“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789.'()>?:”; font=generator.generateFont(参数); gdx.gl20.glclear(GL20.gl_color_buffer_bit); Begin(); f

    • 我正在制作一个塔防游戏,因为我希望制作很多投射物,所以我想我会把它们放在一起。然而,我的投射物有用于碰撞检测的身体场和固定装置,当我对投射物调用free()时,它们的身体仍然存在。 所以我试图用世界毁灭尸体。destroyBody(),但这会导致空指针错误,除非我在外部显式执行。通过像我在这里学到的那样标记我的对象。但是,当我尝试实现这种方法来摧毁尸体时,出现了一些错误,因为被摧毁的尸体与释放弹丸

    • 很抱歉问了那个愚蠢的问题,但我是个安静的傻瓜。我不知道如何在Libgdx中绘制位图字体。我用过HIERO v2。0工具生成位图字体文件。然后我用代码初始化它: 但当我尝试在屏幕上绘制它时: 我得到这个结果:http://imageshack.us/photo/my-images/696/bitmapfont.png/有人知道我做错了什么吗?

    • 上一节课绘制的一个案例是线框立方体,不知大家是否注意到,立方体有8个顶点,但是数组列举顶点的时候,因为绘制直线的时候一个点是三条直线公用, 如果绘制函数gl.drawArrays()绘制模式mode使用gl.LINES模式,每绘制一条直线就需要定义两个顶点。在这种情况下一个点可能在顶点数组中多次列举出来,造成数据重复, 这时候要解决数据的复用,大家应该会想到数据库、索引等概念,也就是说把立方体的8

    • 我在试着用画布画一个网格。逻辑相当简单:对于网格中的每个节点,我使用其左上角和右下角绘制一个矩形[代码如下]。 我没有做任何奇怪的事情,只是根窗口上的一个简单画布。