Я программирую какую-то игру, которую было бы довольно долго объяснять, но вкратце игрок - ellipse () и следует за мышью, в то время как rect () - это препятствие, которое движется вниз по экрану и должно быть уклонено игроком, в противном случае игра окончена.Существует несколько прямоугольников, поскольку я использую ArrayList для хранения каждого объекта препятствия.
В настоящее время игрок может просто проходить прямо через прямоугольник, и с ним ничего не происходит.Я пытался решить эту проблему несколько раз, но это было очень запутанно, и я не мог понять многое из-за того, что был чрезвычайно новым для Java (всего 1 неделя опыта), поэтому я только что поместил пустой код ниже.
tldr ;Мне нужно выяснить, как заставить работать эллипс / прямоугольное столкновение (в своем собственном методе).У меня есть только 1 неделя опыта обработки / Java.Я вырезал большую часть кода, который вам не нужен, в основном просто сохранил переменные, используемые для определения фигур, и код для фигур на тот случай, если вам это нужно.Кроме того, если возможно, метод столкновения мог бы быть помещен в Класс врага .
Класс врага (всепеременные, используемые для определения прямоугольника)
class Enemy {
int enemyNumber; // used to determine enemy type
//VARIABLES FOR ENEMY
boolean redEnemy = false; // determine enemy colour
color enemyColour = color(#B9B9E8); // sets default colour to blue
PVector position, velocity;
float xDist, yDist; // x and y distance for Bar
float smallCircleRad, bigCircleRad; // radius for circles
// **************************************************************************
Enemy() { //CONSTRUCTOR
position = new PVector(width/2, random(-300000, -250));
//println(position.y);
velocity = new PVector(0, 10);
smallCircleRad = 200;
bigCircleRad = 400;
xDist = width;
yDist = 200;
enemyNumber = int(random(1, 6));
}
// **************************************************************************
void redBar(float xPos, float yPos, float xDist, float yDist) {
redEnemy = true;
noStroke();
enemyColour = color(#E38585);
fill(enemyColour);
rect(xPos, yPos, xDist, yDist);
}
void blueBar(float xPos, float yPos, float xDist, float yDist) {
redEnemy = false;
noStroke();
enemyColour = color(#B9B9E8);
fill(enemyColour);
rect(xPos, yPos, xDist, yDist);
}
Класс игрока (все переменные, используемые для определения эллипса)
class Player {
int r = 50; //player radius
float playerX = width/2; //starting x coordinate
float playerY = height/2+500; //starting y coordinate
float speed = 20; //player speed
float angle; //angle used to calculate trajectory for player
void playerChar() { //method for player model and general rules
stroke(10);
rectMode(CENTER);
fill(playerColour);
ellipse(playerX, playerY, r*2, r*2);
}