如何使用精灵作为另一个精灵的锚点?(how to use a sprite as an anchor

2019-10-21 14:04发布

我想知道,如果你能在libgdx连接两个精灵。

让我解释一下,我有一个飞船,我在我的游戏中打开...并且是第一个精灵。

另一个精灵,这样当它变成我,我通过第二雪碧我总能知道坐标,以推进我的船因此得出一个向量我会把飞船上的一角。

我是新来的libgdx,如果任何人有任何想法,将不胜感激。

谢谢。

编辑 :我会按照它总是呈现其他精灵的位置,目前不会发生,提示? 谢谢。

@Override
public void render () {

    sprite.setPosition(Gdx.graphics.getWidth() / 2 - sprite.getWidth()/2, Gdx.graphics.getHeight() / 2 - sprite.getHeight()/2);
    point.setPosition(sprite.getX() + (sprite.getWidth()/2 - point.getWidth()/2), sprite.getY() + (sprite.getHeight() / 2 + point.getHeight()));

    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    if(Gdx.input.isButtonPressed(Input.Buttons.LEFT)){
        //sprite.setPosition(Gdx.input.getX() - sprite.getWidth()/2, Gdx.graphics.getHeight() - Gdx.input.getY() - sprite.getHeight()/2);
        if(Gdx.input.getX() < Gdx.graphics.getWidth() / 2)
        {
            //System.out.println("x: " + Gdx.input.getX() + " - y: " + Gdx.input.getY());
            sprite.setRotation(rotation++);
        }
        else
        {
            System.out.println("x: " + Gdx.input.getX() + " - y: " + Gdx.input.getY());
            sprite.setRotation(rotation--);
            point.setRotation(rotation--);
        }
    }

    batch.begin();
    spacesprite.draw(batch);
    sprite.draw(batch);
    point.draw(batch);
    batch.end();
}

编辑2

正如你可以在图片中看到,我想,当我转动飞船的精灵,红点(这是另一种精灵)留在飞船的一角。 所以,你可以计算与两个精灵的起源点的向量。

我希望已经明确。 2个精灵的联合是不可能在别的libgdx?

编辑3

图片,我希望当船旋转红球始终保持在航天器上的一角。 可能吗?

Answer 1:

如果你的两个精灵具有相同的宽度可以使用此:

这是psudo代码MOR或更小。

float pointY = yourSprite.getY() + yourSprite.getHeight();
float pointX = yourSprite.getX(); 

yourOtherSprite. setX(pointX);
yourOtherSprite. setY(pointY);

如果diferente宽度

float pointY = yourSprite.getY() + yourSprite.getHeight();
float pointX = yourSprite.getX() + (yourSprite.getWidth() / 2); 

yourOtherSprite. setX(pointX - (thisSprite.getWidth() / 2));
yourOtherSprite. setY(pointY);

我现在不能测试,而是让你有一个想法。

我不知道这是你的意思是什么,如果不是这样评论,并删除:

PS:点*是一个Vector2:

pointSpriteA.x = yourSprite.getX() + (yourSprite.getHeight() / 2);
pointSpriteB.x = yourOtherSprite.getY() + (yourOtherSprite.getHeight() / 2);

pointSpriteA.y = yourSprite.getY() + (yourSprite.getWidth() / 2);
pointSpriteB.y = yourOtherSprite.getY() + (yourOtherSprite.getWidth() / 2);

pointC.X = (pointSpriteA.x + pointSpriteB.x) / 2);
pointC.y = (pointSpriteA.Y + pointSpriteB.y) / 2);

所述pointC向量是两个向量的中心。

如果这是你想要的东西,然后问自己,如何旋转? 精灵能有所帮助。

LibGDX -旋转精灵的二维阵列围绕其中心



文章来源: how to use a sprite as an anchor point of another sprite?