2015-01-12 2 views
1

Я хочу знать, если можно, присоединиться к двум спрайтам в libgdx.как использовать спрайт в качестве точки привязки другого спрайта?

Позвольте мне объяснить, у меня есть космический корабль, который я должен включить в свою игру ... и это первый спрайт.

еще один спрайт, который я бы поставил на кончик космического корабля, так что, когда он меня перевернет, я через второй спрайт всегда могу знать координаты и так получим вектор, чтобы продвинуть мой корабль.

Я новичок в libgdx, и если бы кто-нибудь имел какую-либо идею, был бы благодарен.

Thank you.

EDIT : Я бы следил за тем, чтобы всегда отображалось положение других спрайтов, в настоящее время не бывает, подсказки? Спасибо.

@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

Space Ship

Как вы можете видеть на картинке, я хотел бы, что, когда я поворачиваю спрайт космического корабля, красная точка (которая является другой спрайт) остаются на кончике космического корабля. Таким образом, вы можете вычислить вектор с точками происхождения двух спрайтов.

Я надеюсь, что было ясно. Объединение двух спрайтов невозможно в libgdx else?

EDIT 3

Red Dot is not follow spaceship

картина, я хочу, чтобы, когда корабль поворачивает красный шар всегда остается на кончике космического аппарата. Является ли это возможным?

ответ

1

Если два спрайта имеют одинаковую ширину можно использовать следующим образом:

это psudo код мор или меньше.

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 - Rotate a 2d array of sprites around their center

+0

Я редактировал вопрос, с тем, чтобы лучше понять, что мне нужно, это очень важно, чтобы вы всегда следовать визуализации. поэтому вы можете вычислить вектор из центра двух спрайтов. спасибо. –

+0

Возможно, я плохо объяснил, с изображением, которое я загрузил, легче понять мою проблему? Спасибо –

+0

@Alex, возможно, ссылка, я положил, вы можете помочь http://stackoverflow.com/questions/27555023/libgdx-rotate-a-2d-array-of-sprites-around-their-center/27555676#27555676 –