2017-01-28 9 views
-3

Итак, я хочу построить метод обнаружения, если сталкиваются два объекта. Их hitboxes хранятся в массивах. Подобно этому [topLeftX, topLeftY, bottomRightX, bottomRightY] для каждого из двух объектов. Я не могу понять правильные утверждения, чтобы использовать эти два массива для обнаружения этого.Обнаружение столкновения с массивами в Java

public class Physics { 
    public static boolean isColliding(int ob1Hitbox[], int ob2Hitbox[]) { 

    } 
} 

Метод должен возвращать значение true, если произошло столкновение.

+2

Добро пожаловать на переполнение стека! Похоже, вы просите о помощи на дому. Хотя у нас нет проблем с самим собой, обратите внимание на эти [dos and don'ts] (http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845 # 338845), и соответственно отредактируйте свой вопрос. –

+0

Что здесь означает 'объекты'? – Null

+0

@ Необязательные прямоугольники –

ответ

1

Вы можете использовать Rectangle#intersects для того, что расчет делается для вас:

import java.awt.Rectangle; 

public class Physics { 
    public static boolean isColliding(int[] ob1Hitbox, int[] ob2Hitbox) { 
     return toRectangle(ob1Hitbox).intersects(toRectangle(ob2Hitbox)); 
    } 

    private static Rectangle toRectangle(int[] hitbox) { 
     int x = hitbox[0]; 
     int y = hitbox[1]; 
     int width = hitbox[2] - x; 
     int height = y - hitbox[3]; 
     return new Rectangle(x, y, width, height); 
    } 
} 
+0

Почему вы используете слово 'static'? В параллельной вселенной может существовать другая физика;) –