gpt4 book ai didi

java - 如何在 libgdx 中获取旋转 Actor 的区域

转载 作者:行者123 更新时间:2023-12-01 09:53:47 30 4
gpt4 key购买 nike

在我使用 libgdx 开发的一个小游戏中,我将矛作为游戏对象。我使用 Scene2D 作为 Actor 的子类来实现它们。矛可以旋转多个 90°。我只想将图像中的“矛尖”部分作为“伤害”玩家的部分,而轴应该是无害的。因此,当我构建 Spear 对象时,我还构建了 2 个覆盖矛尖和矛杆的矩形。但是当我的 Actor 使用 setRotation() 旋转时,矩形显然不会旋转,因为它们没有“附加”到矛对象。

对于如何处理此类事情,您有什么建议吗?代码如下。

    public TrapEntity(Texture texture, float pos_x, float pos_y, float width, float height, Vector2 center,
float rotation, Rectangle hurtZone, Rectangle specialZone) {
super(texture, pos_x, pos_y, width, height, center, rotation);

this.hurtZone = new Rectangle(hurtZone.getX(), hurtZone.getY(), hurtZone.getWidth(), hurtZone.getHeight());
this.specialZone = new Rectangle(specialZone.getX(), specialZone.getY(), specialZone.getWidth(), specialZone.getHeight());

}

和render方法在同一个类中。我用它来渲染“hurtZone”矩形的边界:

    @Override
public void draw(Batch batch, float alpha){
super.draw(batch, alpha);
batch.end();
sr.setProjectionMatrix(batch.getProjectionMatrix());
sr.setTransformMatrix(batch.getTransformMatrix());
sr.begin(ShapeRenderer.ShapeType.Line);
sr.setColor(Color.RED);
sr.rect(hurtZone.getX(), hurtZone.getY(), hurtZone.getWidth(), hurtZone.getHeight());
sr.end();
batch.begin();

}

最佳答案

矩形无法旋转,我不得不做类似的事情并努力寻找解决方案。我发现的最好的解决方案是使用多边形。你会做这样的事情;

    //Polygon for a rect is set by vertices in this order
Polygon polygon = new Polygon(new float[]{0, 0, width, 0, width, height, 0, height});

//properties to update each frame
polygon.setPosition(item.getX(), item.getY());
polygon.setOrigin(item.getOriginX(), item.getOriginY());
polygon.setRotation(item.getRotation());

然后,检查一个点是否位于旋转的多边形内;

    polygon.contains(x, y);

关于java - 如何在 libgdx 中获取旋转 Actor 的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397661/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com