Cara mendapatkan koordinat x Objek Bentuk di Java

Saya ingin membuat game menembak sederhana. Saya memiliki Kelas Pesawat yang berisi IMG dan Bentuk (Ini adalah batas untuk IMG itu, jadi saya bisa menggunakan atribut metode isIntersect).

Kemudian saya memutar dan menerjemahkan objek tersebut ( Menggunakan AffineTransform ), setelah itu saya ingin mendapatkan koordinatnya. Bisakah seseorang membantu saya?

Ps: Saya mencoba menggunakan Rectangle daripada Shape, tetapi sepertinya saya tidak bisa membuat Objek Rectangle dengan CreateTransformedShape.

Ini kode saya:

public class EPlane {
Shape l = new Rectangle(0,0,45,55);
BufferedImage ep;
private String imgFileName = "Eplane.PNG";
ArrayList<Rectangle> EShoot = new ArrayList();
int live;
AffineTransform at;
AffineTransform at2;
AffineTransform at3;
boolean Alrdy = false;

EPlane(){
    this.live = 5;
    at = new AffineTransform();
    at2 = new AffineTransform();
    at3 = new AffineTransform();
    URL imgUrl = getClass().getClassLoader().getResource(imgFileName);

        if (imgUrl == null) {
            System.err.println("couldn't find file: " + imgFileName);
        } else {
            try {
                ep = ImageIO.read(imgUrl);

            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
}

Dan kelas yang ingin mencari Koordinat x

public class EPlaneCommander {

ArrayList<ArrayList<EPlane>> EPSList = new ArrayList();
int count = 0;
int count1 = 0;
int count2 = 0;

public EPlaneCommander() {
    ArrayList<EPlane> EPS = new ArrayList();
    ArrayList<EPlane> EPS1 = new ArrayList();
    ArrayList<EPlane> EPS2 = new ArrayList();
    EPSList.add(EPS);
    EPSList.add(EPS1);
    EPSList.add(EPS2);
}

public void move1() {
    if (count % 50 == 1 && EPSList.get(0).size() < 10) {

        EPSList.get(0).add(new EPlane());
    }

    for (int i = 0; i < EPSList.get(1).size(); i++) {
        if (!EPSList.get(0).get(i).Alrdy) {
            EPSList.get(0).get(i).at.translate(400, 0);
            EPSList.get(0).get(i).Alrdy = true;               
            EPSList.get(0).get(i).l = EPSList.get(0).get(i).at.createTransformedShape(EPSList.get(0).get(i).l);
            EPSList.get(0).get(i).at2.rotate(0.004, 0, 0);
        }

        //EPS.get(i).at2.rotate(0.0001, 0, 0);
        EPSList.get(0).get(i).l = EPSList.get(0).get(i).at2.createTransformedShape(EPSList.get(0).get(i).l);
        EPSList.get(0).get(i).at.rotate(0.004, -400, 0);
        Point s = (Point) EPSList.get(2).get(i).at.createTransformedShape(EPSList.get(0).get(i).l);
    }

    count++;
}

person Randy Raharjo    schedule 02.12.2013    source sumber


Jawaban (2)


Kelas Shape Java memiliki metode getBounds() yang dapat digunakan untuk mendapatkan objek Rectangle yang memiliki koordinat X dan Y. Ingatlah bahwa dengan grafik Java, koordinat tersebut mewakili sudut kiri atas Rectangle, bukan sudut kiri bawah yang biasa Anda gunakan pada sistem Cartesian pada umumnya.

Rectangle tersebut juga dapat digunakan sebagai kotak pembatas untuk tujuan deteksi tabrakan dalam implementasi grafik rudal pemain Anda, namun Shape telah memiliki metode intersects yang dapat digunakan sebagai kotak pembatas.

person MarsAtomic    schedule 02.12.2013

Kotak pembatas di sekitar bentuk yang diubah akan lebih besar dan mungkin tidak akurat pada titik-titik tertentu. Anda dapat mengubah Bentuk menjadi Area dan memeriksa persimpangan.

Inilah yang saya temukan di jawaban lain. Deteksi tabrakan Java antara dua objek Bentuk?

person user3357745    schedule 24.05.2019