Я использую библиотеку JavaFx 8.Проблема столкновения javafx между дорожкой (строкой) с толстым штрихом и окружением
Моя задача проста: я хочу проверить, сталкивается ли круг с дорогой, которая имеет толстый ход вокруг него. Проблема в том, что обе функции Path.intersect() и Shape.intersect() игнорируют ход вокруг пути/линии.
Path tempPath = new Path(player.getPath().getElements());
//player.getDot() is Circle
if(tempPath.intersects(player.getDot().getBoundsInParent())){
Shape intersect = Shape.intersect(tempPath, player.getDot());
if(intersect.getBoundsInLocal().getWidth() != -1){
System.out.println("Path Collision occurred");
}
}
Мой путь сделан из многих объектов LineTo. Формат таков:
/** Creates path and player dot */
private void createPath() {
this.path = new Path();
this.path.setStrokeWidth(20);
this.path.setStroke(Color.RED);
this.path.setStrokeLineCap(StrokeLineCap.ROUND);
this.path.setStrokeLineJoin(StrokeLineJoin.ROUND);
this.dot = new Circle(10, Color.BLUE);
this.dot.setOpacity(1);
}
Как я мог осуществить успешное обнаружение столкновения?
Вы правы, столкновение отлично работает. Я узнал, что моя ошибка была в дублировании объекта Path. Путь tempPath = new Path (player.getPath(). GetElements());) Свойства старого пути, такие как Stroke and Color, не были перенесены на новый. поэтому необходимо переназначить свойства. –