Java / Slick 2Dを使用しています。マウスを使用してスプライトを回転させ、矢印キーを使用してスプライトを移動しようとしています。スプライトを回転させることは問題ありませんが、本来の方向に動かすことができません。「進む」を押すと、スプライトが必ずしもマウスの方向に移動するわけではありません。実際には、画面の左側に移動するだけです。多くのゲームがこのスタイルのモーションを使用するので、これにはいくつかの標準コードが必要だと確信しています。誰かがトリガーが何であるかを教えてくれますか?ありがとう
編集:これは回転コードです(これは何か奇妙なことをします:https://stackoverflow.com/questions/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;
}
追加したコードのポイントは何ですか?これは新しい問題ですか?新しい問題の場合は、新しい質問を開いてください。この質問は、スプライトを向いている方向に移動することに関する情報でのみ更新してください。
—
MichaelHouse
いいえ、問題を引き起こしたのは私が使用したコードです。以下のコメントを参照してください。誰かがそれを求めました。
—
rphello101 2012
sprite.movespeedを計算する場所がわかりませんか?
—
AturSams 2012
movespeedは定数で、この場合は.3に設定されています
—
rphello101