我想知道,如果可以,请在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
正如你在图片中看到的那样,我希望当我旋转航天器的精灵时,红点(这是另一个精灵)仍然留在太空船的尖端。因此,您可以使用两个精灵的原点计算向量。
我希望已经清楚了。 在libgdx中,两个sprite的联合是不可能的吗?
编辑3
图片,我希望当船旋转时,红球仍然始终位于航天器的尖端。有可能吗?
答案 0 :(得分:1)
如果你的两个精灵有相同的宽度可以使用:
这是psudo code mor或更少。
float pointY = yourSprite.getY() + yourSprite.getHeight();
float pointX = yourSprite.getX();
yourOtherSprite. setX(pointX);
yourOtherSprite. setY(pointY);
如果是differente width
float pointY = yourSprite.getY() + yourSprite.getHeight();
float pointX = yourSprite.getX() + (yourSprite.getWidth() / 2);
yourOtherSprite. setX(pointX - (thisSprite.getWidth() / 2));
yourOtherSprite. setY(pointY);
我现在无法测试,但你有一个想法。
新强>
我不知道这是不是你的意思,如果不是这样评论并删除:
P.s:points *是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向量是两个向量的中心。
如果这就是你想要的,并问自己,如何旋转?精灵可以帮助你。