通过改变角度在斜坡中从一点到另一点移动一个矩形

时间:2016-02-27 14:20:57

标签: java graphics java-2d

所以我有这个程序来测试物体在斜坡中向下滑动的可能性,考虑到它的摩擦力,物体质量和斜坡角度。但是,如果力是正的,我需要为盒子设置动画。只是一个简单的动画,将盒子从那个点移动到斜坡的末端。但我不能。请帮忙

    private void drawTransform(Graphics g, double modifier) {
   // redtowhite = new GradientPaint(0,0,color.RED,100, 0,color.WHITE);
Rectangle rect = new Rectangle(130,350, 350, 15);
    Rectangle box = new Rectangle((int) (rect.getX()+300), 300, 50, 50);
    AffineTransform at = new AffineTransform();
    at.rotate(-Math.toRadians(modifier), rect.getX(), rect.getY() + rect.height);

    // Transform the shape and draw it to screen
    Graphics2D g2d = (Graphics2D) g;
    g2d.setColor(Color.DARK_GRAY);
   // g2d.fillRect(0, 0, 350, 600);
    g2d.fill(at.createTransformedShape(rect));
    g2d.draw(at.createTransformedShape(box));

}

截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

如果你想要做的只是移动框,可以通过简单地更新它的X位置来完成。您应该可以使用类似" box.x ++"之类的东西直接操纵矩形的X位置。或者,您可以创建一个变量和引用来提供初始X坐标,然后更新该变量将"移动"盒子。一个问题是这将沿X轴移动框,因此您还需要某种恒定的向下力作为重力。这很容易实现,只要在没有与地面或坡道碰撞时减去方框的Y位置值。

另一种方法是使用矢量进行基于速度的移动,但是你提到动画应该很简单。如果你想要一个更平滑的动画速度移动将提供这个,但你需要先进行一些研究。