gpt4 book ai didi

Java-旋转矩形以进行碰撞

转载 作者:行者123 更新时间:2023-11-30 11:36:54 28 4
gpt4 key购买 nike

我正在使用 Java Slick StateBaeedGame 并希望为我的碰撞旋转我的矩形,我知道这可以使用 Graphics 或 Graphics2D 对象进行视觉目的,但不会修改矩形本身,即最初列出的矩形使用变量并在图形方法中调用不旋转,为了使事情更清楚,这里有一些代码:

    java.awt.geom.Rectangle2D.Float rectTwo = new Rectangle2D.Float(460 + buckyPositionX, 50 + buckyPositionY, 100, 100);

public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException{
worldMap.draw(buckyPositionX,buckyPositionY); //draw the map at 0,0 to start
bucky.draw(shiftX,shiftY); //draw bucky at 320, 160 (center of the screen)


g.rotate(460 + buckyPositionX, 50 + buckyPositionY, 40);
g.fillRect((float)rectTwo.getX(), (float)rectTwo.getY(), (float)rectTwo.getWidth(), (float)rectTwo.getHeight());
}

当我加载我的 GUI 时,矩形 rectTwo 将显示为旋转,但它实际上并没有旋转,如果我测试碰撞,矩形仍处于 0 度。

那么,如何让我的矩形变量改变它的角度呢?

最佳答案

一般来说,你不能。

您可以做的是改变形状的路径...

PathIterator pathIterator = shape.getPathIterator(AffineTransform.getRotateInstance(Math.toRadians(33.5)));

现在这对您来说用处不大,但您可以使用 Path2D#append 将路径追加回 Shape 对象...

GeneralPath path = new GeneralPath();
path.append(pathIterator, true);

哪个可以让你画它...

((Graphics2D)g).fill(path);

当然,这假设您的 Graphics 上下文是一个 Graphics2D 实例。

这也意味着,您不能维护对 Rectange2D 的直接引用,而是需要使用 Shape

关于Java-旋转矩形以进行碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328864/

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