Я використовую Java / Slick 2D. Я намагаюся використовувати мишу для обертання спрайту та клавіші зі стрілками для переміщення спрайту. Я можу змусити спрайт обертатися без проблем, але я не можу змусити його рухатись у напрямку, в якому він повинен. Коли я натискаю "вперед", спрайт не обов'язково рухається до миші. Насправді він дійсно рухатиметься лише вліво від екрана. Я впевнений, що для цього повинен бути якийсь стандартний код, оскільки багато ігор використовують цей стиль руху. Хтось може мені допомогти з тим, яким повинен бути триггер? Дякую
EDIT: Ось код повороту (який ще щось дивно: /programming/12610320/why-is-my-image-rotating-off-center )
int mX = Mouse.getX();
int mY = HEIGHT - Mouse.getY();
int pX = sprite.x;
int pY = sprite.y;
int tempY, tempX;
double mAng, pAng = sprite.angle;
double angRotate=0;
if(mX!=pX){
mAng = Math.toDegrees(Math.atan2(mY - pY, mX - pX));
if(mAng==0 && mX<=pX)
mAng=180;
}
else{
if(mY>pY)
mAng=90;
else
mAng=270;
}
sprite.angle = mAng;
sprite.image.setRotation((float) mAng);
І код руху. Я можу рухатись лише вліво від екрана ...
double ang = sprite.angle;
Input input = gc.getInput();
if(input.isKeyDown(sprite.up)){
sprite.x += Math.cos(ang)*sprite.moveSpeed;
sprite.y += Math.sin(ang)*sprite.moveSpeed;
}if (input.isKeyDown(sprite.down)){
sprite.x += -1*Math.cos(ang*Math.PI/180)*sprite.moveSpeed;
sprite.y += -1*Math.sin(ang*Math.PI/180)*sprite.moveSpeed;
}if (input.isKeyDown(sprite.left)){
sprite.x -= Math.cos(ang*Math.PI/180)*sprite.moveSpeed;
sprite.y += Math.sin(ang*Math.PI/180)*sprite.moveSpeed;
}if (input.isKeyDown(sprite.right)){
sprite.x += Math.cos(ang*Math.PI/180)*sprite.moveSpeed;
sprite.y -= Math.sin(ang*Math.PI/180)*sprite.moveSpeed;
}