getX()
et getY()
position de retour de l'acteur dans la coordination locale. Vous pouvez transformer cette position en coordonnées de scène.
Acteur ayant procédé localToStageCoordinates(Vector2 localCoords)
qui transforme le point spécifié dans les coordonnées de l'acteur à être dans les coordonnées de l'étape
créer un niveau de classe de la variable de position locale.
Vector2 localPos= new Vector2();
valeur définie dans cette localPos et
localPos.set(myActor.getX(),myActor.getY());
Vector2 stagedPos=group.localToStageCoordinates(localPos);
stagedPos.x
et stagedPos.y
est votre exigence.
test
public class TestGame extends Game implements InputProcessor{
Stage stage;
Image image;
Group group;
Vector2 vector2=new Vector2();
@Override
public void create() {
stage=new Stage();
group=new Group();
Gdx.input.setInputProcessor(this);
image=new Image(new Texture("image/base.png"));
image.setPosition(100,100);
group.addActor(image);
stage.addActor(group);
System.out.println("Initial Position of Actor : "+image.getX()+" And "+image.getY());
}
@Override
public void render() {
super.render();
Gdx.gl.glClearColor(1,1,1,1);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.draw();
stage.act();
}
@Override
public void resize(int width, int height) {
super.resize(width, height);
stage.getViewport().update(width,height);
}
@Override
public boolean keyDown(int keycode) {
return false;
}
@Override
public boolean keyUp(int keycode) {
return false;
}
@Override
public boolean keyTyped(char character) {
return false;
}
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
System.out.println("Actor Position Before moveBy on Group is : "+image.getX()+" And "+image.getY());
group.moveBy(50,50);
System.out.println("After moveBy applied on Group, Actor Position is : "+image.getX()+"And"+image.getY());
vector2.set(image.getX(),image.getY());
Vector2 stageCord=group.localToStageCoordinates(vector2);
System.out.println("Position with Stage Cord. is : "+stageCord.x+" And "+stageCord.y);
return false;
}
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int button) {
return false;
}
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
return false;
}
@Override
public boolean mouseMoved(int screenX, int screenY) {
return false;
}
@Override
public boolean scrolled(int amount) {
return false;
}
}
sortie est:
Position initiale Acteur: 100,0 et 100,0
Acteur Position Avant moveBy sur Groupe est: 100,0 et 100,0
Après moveBy appliqué sur le groupe, Acteur Position est: 100.0 et 100.0
Position avec cordon de phase. est: 150.0 et 150.0
Im assez sûr que 'group.localToStageCoordinates (nouveau Vector2 (actor.getX(), actor.getY()));' ne retournera pas la valeur correcte, mais 'actor.localToStageCoordinates (new Vector2 (0,0)); 'sera, je pourrais avoir tort, mais j'ai bataille avec cela quelques fois, juste au cas où cela ne vous aiderait pas essayer mon exemple – centenond
@centenond j'ai testé et c'est très bien comme je l'ai expliqué, s'il vous plaît vérifier mise à jour répondre – Aryan
regardez ça, je suppose que je faisais le mal tout le temps – centenond