Pindahkan Aktor secara akurat LibGDX Scene2d

Jadi saya memiliki aktor yang merupakan sprite, yang diatur pada panggung screenviewport. Yang ingin saya lakukan adalah menyentuh aktor tersebut, lalu menyentuh suatu titik di layar sehingga ia akan bergerak dengan lancar. Saat ini ketika saya menyentuh aktor itu sepertinya melompat ke tempat yang acak. Berikut adalah beberapa kode di kelas aktor saya,

public MyActor(){

    setBounds(sprite.getX(),sprite.getY(),
              sprite.getWidth(),sprite.getHeight());

    setTouchable(Touchable.enabled);

    addListener(new InputListener(){
        @Override
        public boolean touchDown(InputEvent event, float x, float y,
                                 int pointer, int button) {

            MoveByAction mba = new MoveByAction();
            mba.setAmount(x,y);
            MyActor.this.addAction(mba);
            return true;
        }


    });
}

@Override
protected void positionChanged() {
    sprite.setPosition(getX(),getY());
    super.positionChanged();
}

@Override
public void draw(Batch batch, float parentAlpha) {
   sprite.draw(batch);
}
@Override
public void act(float delta){
    super.act(delta);
}

person jumpman8947    schedule 03.03.2015    source sumber
comment
Gunakan metode proyek kamera area pandang panggung untuk mengubah layar X dan y menjadi x dan y panggung.   -  person Tenfour04    schedule 03.03.2015


Jawaban (1)


Beberapa hal untuk ditanyakan di sini. Pertama-tama, sentuhan Anda hanya pada sentuhan Aktor Anda. Di situlah letak aktornya. Anda perlu menerapkan di level Adegan Anda beberapa mesin status dasar untuk mengetahui "pada ketukan pertama, aktor ini dipilih", kemudian mesin tersebut harus berada dalam status "pilih ke mana aktor ini pergi", dan terakhir saat Anda memilih posisi yang dimilikinya untuk mengirimkan XY tersebut ke aktor yang dipilih untuk melakukan perpindahan.

Sekarang, seperti yang disebutkan Tenfour04, Anda harus mengetahui konversi XY layar dari titik sentuh menjadi koordinat dunia game. Tenfour04 memberikan komentar yang baik tentang penggunaan metode proyeksi pada kamera viewport untuk mencapai hal ini. Setelah Anda melakukannya, Anda dapat mengirimkan koordinat ke aktor Anda untuk melakukan hal-hal yang disebutkan sebelumnya.

Untuk mencapai gerakan tersebut, saya akan menggunakan kerangka Aksi, seperti di bawah ini: actor.addAction(moveTo(x, y, 0.4f, Interpolation.circle));

Halaman ini menunjukkan kepada Anda semua tindakan bagus yang tersedia untuk Scene2d: https://github.com/libgdx/libgdx/wiki/Scene2d#actions

Semoga itu yang Anda butuhkan. :)

person Gregory Fein    schedule 03.03.2015