Java 旋转sprite的LibGDX问题

Java 旋转sprite的LibGDX问题,java,android,rotation,libgdx,sprite,Java,Android,Rotation,Libgdx,Sprite,好吧,我真的很困惑,我以前旋转过精灵,没有任何问题,比如当船在海洋中移动时旋转,但由于某种原因,这次我遇到了一个很大的问题。所以我在资源文件中创建了一个纹理,但不是静态纹理。我使用以下命令加载纹理: class Assets{ Texture img; public Assets(){ img = new Texture(Gdx.files.internal("images/PNG.png") 然后我调用main类中的资产,调用: Assets assets =

好吧,我真的很困惑,我以前旋转过精灵,没有任何问题,比如当船在海洋中移动时旋转,但由于某种原因,这次我遇到了一个很大的问题。所以我在资源文件中创建了一个纹理,但不是静态纹理。我使用以下命令加载纹理:

class Assets{
    Texture img;
    public Assets(){
        img = new Texture(Gdx.files.internal("images/PNG.png")
然后我调用main类中的资产,调用:

Assets assets = new Assets()
然后我有一个专门为这个主要角色设计的动画师课程,因为他的动画与其他角色非常不同

class Animations{
    Guy MYGUY;
    Texture firstTexture;
    ArrayList<Texture> running;
    Sprite CurrentSprite;
    public Animations(Texture standingStill, Guy myGuy){
        MYGUY = myGuy;
        firstTexture = standingStill;
        running = new ArrayList<Texture>();
        running.add(firstTexture);
        CurrentSprite = new Sprite(firstTexture);

    public void update (int direction, int state){
         CurrentSprite.setPosition(MYGUY.X, MYGUY.Y)
        // I have a switch here, but it does nothing yet because I haven't added in different actions for the character.
        //However I do have a switch for direction, because that is important right now
        switch(state){
        case Guy.LEFT:
            CurrentSprite.set rotation(180);
        //yes there are more, but even rotating 180 won't work correctly
        }

所以我的问题出现在旋转上,每当它旋转180度时,它似乎总是围绕坐标(0,0)旋转,而不是围绕精灵的中心旋转。所以它通常会在我向右移动五次的地方结束,但是如果我尝试向左移动,它会向后移动两倍的距离,但是相机的位置保持不变,而且这个家伙通常会从屏幕的左侧或右侧消失。

与其旋转精灵,不如用这一行翻转它:

CurrentSprite.flip(true, false);

第一个布尔值是X翻转(当向左移动时,您希望将其设置为true),第二个布尔值是Y翻转。

不旋转精灵,只需用这一行翻转它即可:

CurrentSprite.flip(true, false);
第一个布尔值是X翻转(当向左时,您希望将其设置为true),第二个布尔值是Y翻转。

尝试使用
rotate(…)
方法,而不是
setRotation(…)。

使用
setOrigin(widthSprite\2,heightSprite\2)


该操作将旋转精灵本身。

尝试使用
旋转(…)
方法,而不是
设置旋转(…)。

使用
setOrigin(widthSprite\2,heightSprite\2)


该动作会旋转精灵本身。

试试看

sprite.setOriginCenter();
这应该会有帮助

试试看

sprite.setOriginCenter();

这将有助于尝试使用
rotate(…)
方法,而不是
setRotation(…)
。使用
setOrigin(widthSprite\2,heightSprite\2)
。我会在几个小时后回到我的电脑时尝试,谢谢你的想法。只是出于好奇:对于动画,你在使用libgdx动画吗?如果不是,我建议这样做。不,我不是,只是因为主要角色动画的复杂性,但是对于其余的角色,我是,但是是的,谢谢你的建议尝试使用
rotate(…)
方法,而不是
setRotation(…)
。使用
setOrigin(widthSprite\2,heightSprite\2)
。我会在几个小时后回到我的电脑时尝试,谢谢你的想法。只是出于好奇:对于动画,你在使用libgdx动画吗?如果不是,我会建议这样做。不,我不是,只是因为主要角色动画的复杂性,但是对于其余的角色,我是,但是是的,谢谢你的建议。我想这样做,但当我想上升时,这不起作用,这不是一个平台游戏。。。这更像是一个2d世界,有点像旧的gameboy风格的游戏,你可以从上面控制一个主要角色。就像鹰眼一样,也许有点像老口袋妖怪的样子。因此,我需要能够使角色面朝上,角度为45°,suchI实际上正在使用与您相同的视图类型进行游戏,而且效果很好!你想用图片来说明你的问题吗?是的,我很想,但我不知道怎么做,因为我现在只有手机,我不知道怎么做,或者如果可以在手机应用程序上添加图片,我想这样做,但当我想升级时,这不起作用,这不是一个平台游戏。。。这更像是一个2d世界,有点像旧的gameboy风格的游戏,你可以从上面控制一个主要角色。就像鹰眼一样,也许有点像老口袋妖怪的样子。因此,我需要能够使角色面朝上,角度为45°,suchI实际上正在使用与您相同的视图类型进行游戏,而且效果很好!你想用图片来说明你的问题吗?是的,我很想,但我不知道怎么做,因为我现在只有手机,我不知道怎么做,或者是否可以在手机应用程序上添加图片