मैं Java / Slick 2D का उपयोग कर रहा हूं। मैं माउस का उपयोग करने के लिए स्प्राइट और तीर कुंजी को घुमाने के लिए घुमाता हूं। मैं स्प्राइट को बिना किसी समस्या के घुमाने के लिए प्राप्त कर सकता हूं, लेकिन मैं इसे उस दिशा में नहीं ले जा सकता जहां इसे माना जाता है। जब मैं "फॉरवर्ड" मारता हूं, तो स्प्राइट आवश्यक रूप से माउस की ओर नहीं बढ़ता है। वास्तव में, यह केवल स्क्रीन के बाईं ओर बढ़ेगा। मुझे यकीन है कि इसके लिए कुछ मानक कोड होना चाहिए क्योंकि कई गेम इस गति की शैली का उपयोग करते हैं। क्या कोई मेरी मदद कर सकता है कि ट्रिगर क्या माना जाता है? धन्यवाद
संपादित करें: यहाँ रोटेशन कोड है (जो कुछ और अजीब करता है: /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;
}