【发布时间】:2015-10-02 13:30:08
【问题描述】:
问题如下: 我有一个可以说是宇宙飞船的位置,并且必须在它的中间定义该位置(例如,由于碰撞问题等)。如果宇宙飞船不旋转,图像会这样绘制:
spaceship.draw(xPos - width/2 , yPos - height/2);
宇宙飞船现在是 Slick2D 中的图像,具有随机角度 (0
它在图像周围绘制一个椭圆(我猜可能表面积最小),然后查看距中心 135° 的线切割椭圆(红点)的位置并将其设置为位置。
我仍然想把它画在中心,也就是说,我必须在两个维度上减去一个值(draw(xPos - xOff, yPos - yOff)):
但我无法计算!有人能帮助我吗?我浪费了两天时间来了解问题所在......
非常感谢,问候, r
这里是渲染代码:
> public void render(GameContainer gc, StateBasedGame sbg, Graphics g)
> throws SlickException{
>
> // This sets all rotation to the middle of the graphics.
> // The method works RELATIVE TO THE TOP-LEFT-CORNER OF THE IMAGE.
> skin.setCenterOfRotation(skin.getWidth() * Revolve.getGS()/2 + Revolve.getXShift(),
> skin.getHeight() * Revolve.getGS()/2 + Revolve.getYShift());
>
> // This sets the Angle properly
> skin.setRotation(angle);
>
> // This draws the image: xPos and yPos define THE CENTER of the Image.
> skin.draw(
> (float) (Revolve.getXShift() + Revolve.getGS() * xPos),
> (float) (Revolve.getYShift() + Revolve.getGS() * yPos),
> Revolve.getGS()
> );
>
> // Draws the xPos and yPos of the Ship
> g.setColor(Color.white);
> g.drawOval(Revolve.getXShift() + Revolve.getGS() * xPos, Revolve.getYShift() + Revolve.getGS() * yPos, 2, 2);
> }
【问题讨论】:
-
我不确定你的问题是什么。您想在特定位置绘制图像并旋转它吗?如果是这样,我不明白您为什么需要如此先进的概念。请问你能不能换个方式解释一下?
-
如果您只想旋转图像,为什么旋转不适合您的需求?
-
抱歉,请假了 6 天,我正在度假,这很棒 :-) 现在问题来了:我可以旋转图像,这很容易。但是在旋转它之后,我必须在特定位置(x,y)绘制它(旋转后的图像)。所以,我说 image.draw(x,y),但是 x 和 y 不在图像的中心,而是在中心的左上角。具体来说:在上面绘制的红点处。但我想定义旋转图像的中心,并且必须在那里绘制它。这更清楚吗?否则请告诉我!问候,r
-
很高兴你有假期! ;) 你能发布你的代码吗?
-
您好,先生!我想这无济于事,只要您不了解问题到底是什么。我想再解释一下,如果你理解问题,我会发布代码。问题:旋转图像的位置不是由其左上角定义的。设置旋转中心效果很好。旋转完美。什么不起作用,是按预期绘制旋转图像,因为我将其位置定义为 100,100 或其他任何值,然后左上角不在那个位置!
标签: java image slick2d image-rotation