Я пишу игру и работаю над столкновениями. В настоящее время я пытаюсь использовать функцию tileCollision, чтобы вернуть одномерный массив, содержащий 2 числа; координаты угла. (представлен в программе cX и cY)
Я ожидал, что это будет работать гладко: то есть, чтобы вернуть {-999, -999}, если оно не сталкивалось, и вернуть действительный набор координат в противном случае. К сожалению, IntelliJ говорит мне, что переменные goodCX и goodCY «не могли быть инициализированы», и я не знаю, как их решить. Запуск программы выдает мне ту же ошибку.
Класс Tile можно рассматривать как класс, содержащий значение X, значение Y и текстуру. Значение t.texture.width & t.texture.height должно быть установлено равным 50, чтобы его было проще понять. Сущность может быть принята как класс, содержащий переменные с именами x, y, vx, vy и «текстуру», размеры которой должны быть 20x20. Я использую Java с библиотекой Processing 3 для рендеринга своего кода и с радостью предоставлю дополнительную информацию, если это необходимо.
Основная проблема заключается не в том, что проблема "возможно, не инициализирована", а в том, что она не инициализирована. .
Пожалуйста, go, будьте осторожны со мной, и, если возможно, не используйте ничего за пределами области того, что продемонстрировано в моем коде. Я программист-любитель, и хотя я некоторое время программировал, я не совсем профессионал.
Вот мой код:
public float[] tileCollision(Tile t)
{
boolean isCollide = false;
float tX = t.eX;
float tX2 = t.eX + t.texture.width;
float tY = t.eY;
float tY2 = t.eY + t.texture.height;
float[] cX = new float[]{this.x + this.vx, this.x + this.texture.width + this.vx};
float[] cY = new float[]{this.y + this.vy, this.y + this.texture.height + this.vy};
float[] bad = new float[]{-999, -999};
float goodCX, goodCY;
System.out.println("\nCollisions Testing Names:");
System.out.println(this);
System.out.println(t);
for(int i = 0; i < 2; i ++)
{
for(int i_ = 0; i_ < 2; i_ ++)
{
System.out.println("\nCollisions Testing:");
System.out.println("Entity X: " + cX[i]);
System.out.println("Entity Y: " + cY[i_]);
System.out.println("Tile Xs: " + tX + ", " + tX2);
System.out.println("Tile Ys: " + tY + ", " + tY2);
if( ( (tX <= cX[i]) && (cX[i] <= tX2) ) && ( (tY <= cY[i_]) && (cY[i_] <= tY2) ) )
{
isCollide = true;
goodCX = cX[i];
goodCY = cY[i_];
}
}
}
System.out.println("Am I colliding?\n>>> " + isCollide);
if(isCollide)
{
return new float[]{goodCX, goodCY};
}
else { return(bad); }
}