java - sociales - cómo usar un sprite como punto de anclaje de otro sprite?
sprites javascript (1)
Quiero saber, si puedes, unir dos sprites en libgdx.
Déjame explicarte, tengo una nave espacial que tengo que convertir en mi juego ... y es el primer sprite.
otro sprite que pondría en la punta de la nave para que cuando me gire, a través del segundo sprite siempre pueda conocer las coordenadas y así obtener un vector para avanzar en mi nave.
Soy nuevo en libgdx y si alguien tuviera alguna idea, estaría agradecido.
Gracias.
EDITAR : Me gustaría seguir que siempre representan la posición de los otros sprites, actualmente no sucede, ¿consejos? Gracias.
@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();
}
EDIT 2
Como puedes ver en la imagen, me gustaría que cuando gire el sprite de la nave espacial, el punto rojo (que es otro sprite) permanezca en la punta de la nave espacial. Entonces puedes calcular un vector con los puntos de origen de los dos sprites.
Espero haber sido claro. Una unión de dos sprites no es posible en libgdx else?
EDIT 3
imagen, deseo que cuando la nave gire la bola roja permanezca siempre en la punta de la nave espacial. ¿Es posible?
Si tus dos sprites tienen el mismo ancho, puedes usar esto:
este es el código psudo más o menos.
float pointY = yourSprite.getY() + yourSprite.getHeight();
float pointX = yourSprite.getX();
yourOtherSprite. setX(pointX);
yourOtherSprite. setY(pointY);
si ancho diferente
float pointY = yourSprite.getY() + yourSprite.getHeight();
float pointX = yourSprite.getX() + (yourSprite.getWidth() / 2);
yourOtherSprite. setX(pointX - (thisSprite.getWidth() / 2));
yourOtherSprite. setY(pointY);
No puedo probar ahora, pero entonces tienes una idea.
Nuevo
No sé si esto es lo que quieres decir si no, así que coméntalo y elimínalo:
Ps: puntos * es un 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);
el vector pointC es el centro de los dos vectores.
si eso es lo que quieres, y pregúntate a ti mismo, ¿cómo rotar? sprites puede esto ayuda.
LibGDX - Gira una serie 2d de sprites alrededor de su centro