在Andengine中旋转时MoveModifier

时间:2015-07-19 19:49:54

标签: andengine

我试图弥补枪的缺点,为此枪应该旋转一点然后回去,然后它应该前进一点(模拟射击者的重新定位)。

使用MoveByModier执行此操作需要在每个manageUpdate和一些三角函数中更改它。如果我不这样做,我可以用2条路线(一个用于拉动的修改器和另一个重新定位)但它仍然很难

This is a 2 points animation, the rectangle displaces to one point,and then to another

那么,是否存在一个独立于位置和旋转的MoveModifier?

1 个答案:

答案 0 :(得分:0)

过了一段时间,我想出了如何制作2点动画。

public void drawback (Sprite sprite, float DeltaAngle, float drawback){
    Vector2 center= new Vector2(sprite.getRotationCenterX(),sprite.getRotationCenterY());
    Vector2 radiusPoint = new Vector2(sprite.getWidth(),sprite.getHeight());
    float radius = radiusPoint.dst(center)/PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT;

    Vector2 currentPosition= new Vector2(sprite.getX(),sprite.getY());

    Vector2 pointA = new Vector2(
            (float)Math.cos(Math.toRadians(DeltaAngle/2+180))*drawback   +  Float.valueOf (sprite.getX()),
            (float)Math.sin(Math.toRadians(DeltaAngle/2+180))*drawback   +  Float.valueOf (sprite.getY())  );

    Vector2 pointB = new Vector2(
            (float) Math.cos (Math.toRadians((DeltaAngle)))*radius +  Float.valueOf (sprite.getX()),
            (float) Math.sin (Math.toRadians((DeltaAngle)))*radius +  Float.valueOf (sprite.getY()) );



    sprite.registerEntityModifier(new ParallelEntityModifier(
            new RotationByModifier(2,15),
            new SequenceEntityModifier(
                    new PathModifier(.5f,new PathModifier.Path(
                            new float[]{currentPosition.x,pointA.x},
                            new float[]{currentPosition.y,pointA.y}))),
                    new PathModifier(1.5f,new PathModifier.Path(
                            new float[]{pointA.x,pointB.x},
                            new float[]{pointA.y,pointB.y}))
    ));}

我相信测试可以简化,但我会把它留给一个好奇的评论者