2015-07-17 3 views
0

Я пытаюсь реализовать детектор столкновения между моим Player (актером) и моим Obstacle (также актером), и мне интересно, как лучше всего выполнить collision detection между ними. Я вижу, что некоторые пользователи говорят, что они создают Rectangle object в классе и обновляют его границы для каждого фрейма, но я не знаю, является ли это наилучшим способом выполнения этого (я также пытаюсь это сделать, но мой метод обнаружения столкновений срабатывает, прежде чем мой игрок коснется препятствия).Обнаружение столкновения между актерами

Это то, что я пытаюсь проверить:

public boolean touchedWall() { 
    // Loop for the obstacles 
    for (Obstacle obstacle : this.world.getObstacles()) { 
     // Check if player collided with the wall 
     if (this.bounds.overlaps(obstacle.getBounds())) { 
      Gdx.app.log(Configuration.TAG, "collided with " + obstacle.getName());    
      return true; 
     } 
    } 
    return false; 
} 

И это где метод Триггеры (он должен вызвать, когда границы игрока врезался в стену):

Position where the method triggers

+0

Каков тип «границ», на который ссылается «this.bounds.overlaps (препятствие.getBounds())»? – Fooble

+0

В обоих актерах я сделал это: 'private Rectangle bounds'. Это вы хотели узнать? Я не знаю, почему это происходит, потому что я сделал разницу между X-позицией Rectangle и X-позицией границ актера, и результат был равен 0. – Jazzguy

ответ

0

Я понял! Вместо того, чтобы использовать this.bounds.set(x, y, width, height), я использовал this.bounds.set(x, y, height, width) так:

this.bounds.set(this.getX(), this.getY(), this.getHeight(), this.getWidth()); 

Извините за мою ошибку.