Tôi đang làm việc trên một trò chơi 2D đơn giản với Java, swing và không có khung. Tôi có một trình phát hình chữ nhật mà người dùng có thể di chuyển. Trên bản đồ là vài chướng ngại vật mà người chơi không thể vượt qua được. Tôi đã làm điều này bằng cách tạo một đối tượng hình chữ nhật mới cho người chơi và mỗi chướng ngại vật với giới hạn của họ. Nhưng tôi không thực sự chắc chắn nếu đây là cách đúng đắn để làm điều đó. Nó hoạt động nhưng các chuyển động của người chơi không thực sự thân thiện với người dùng. Nếu người chơi muốn vượt qua hai chướng ngại vật họ phải ở trên tọa độ hoàn hảo để vượt qua.Phát hiện Hitbox trò chơi Java & Góc tròn
Thậm chí có nên kiểm tra giao lộ giữa người chơi và vật cản với vật thể hình chữ nhật hay tôi nên làm theo cách khác?
Bây giờ cho câu hỏi thứ 2 của tôi:
Tôi muốn thay thế hộp đánh dấu hình chữ nhật bằng cùng một hộp kiểm nhưng với góc tròn để người chơi có thể vượt qua dễ dàng hơn.
Đây là trò chơi trông giống như đã kích hoạt hộp hit.
Mã để kiểm tra nếu các cầu thủ và những trở ngại vẫn chưa giao nhau:
for (Player p : this.getPlayerArray()) {
Rectangle recPlayer = p.playerBounds();
for (Obstacle kiste : obstacleArray) {
Rectangle recKiste = kiste.obstBounds();
if (recPlayer.intersects(recKiste)) {
p.setX(100); //Not actual code here
}
}
}
Các hàm trả về hitbox của máy nghe nhạc/trở ngại:
public Rectangle obstBounds() {
return new Rectangle(this.getX(),
this.getY(), image.getImage().getWidth(null),
image.getImage().getHeight(null));
}
Tôi nghĩ bạn có thể làm cho vụ va chạm dựa trên hệ thống giống như bản đồ gạch. – GiantTree
@GiantTree Thats cách tôi tạo bản đồ. Nhưng đó là tất cả tự mã hóa. Có sự khác biệt với phát hiện bản đồ ngói không? – Aruloci
Chỉ để làm rõ: Bạn đang di chuyển trên bản đồ lát gạch hay có chuyển động tự do. Nếu người chơi của bạn đang di chuyển trên một bản đồ lát gạch, bạn chỉ có thể kiểm tra xem ô mà bạn muốn di chuyển là có thể thực hiện được hay không và di chuyển tương ứng. – GiantTree