在不旋转整个屏幕的情况下绘制旋转对象

时间:2012-11-23 20:51:30

标签: java

我正在尝试旋转播放器以跟随鼠标。为此,我使用Graphics obj转换为Graphics2D对象并使用rotate方法。这是我的小组抽奖:

public void paint(Graphics g){
    g.setColor(Color.white);
    g.clearRect(0, 0, this.getWidth(), this.getHeight());
    player.draw(g);
    enemy.draw(g);
    mouseSelection.draw(g);
    wallBoard.draw(g);
    //draw the existing walls
    for(Wall w : walls)
        w.draw(g); 

    //draw the potential wall
    potentialWall.draw(g);

    //draw the lineWalls
    for(Wall w : lineWalls)
        w.draw(g);
}

所有旋转的东西都发生在player.draw(g)中,但我认为拥有更多信息而不是更少的信息会更好。这是我的player.draw(g)

    public void draw(Graphics g){
    //draw the player as a circle for now
    g.setColor(Color.black);
    Graphics2D g2d = (Graphics2D)g;
    g2d.drawOval(getX(), getY(), 20, 20);
    sword.draw(g2d);
    g2d.rotate(rotation);
    g2d.rotate(0);
}

我尝试了很多g2d.rotate和绘制形状的组合。有关如何旋转玩家和剑的建议,而不是整个世界本身的建议吗?

1 个答案:

答案 0 :(得分:2)

我会尝试将您的播放器绘制到自己的图像(使用自己的图形对象),旋转该图像,然后在主图形上绘制该图像。

你会遇到一些可能令人讨厌的障碍,比如临时图像的透明度,但它们不是任何不能带着一点血汗和眼泪的东西。