एक गणित व्याख्यान मिलने के बाद, यह पता चला है कि इस को हल करने के लिए आसान है। सबसे पहले, हमें उस कोण को प्राप्त करने की आवश्यकता है जिस पर लक्ष्य चल रहा है।
float deltaX = targetX - startX;
float deltaY = targetY - startY;
float angle = Math.atan2(deltaY, deltaX);
स्टार्टएक्स/वाई वर्तमान एक्स/वाई हो सकता है।
अब जब हम कोण गणना की है, हम वर्तमान निर्देशांक में इसे लागू कर सकते हैं:
currentX += speed * Math.cos(angle);//Using cos
currentY += speed * Math.sin(angle);//or sin
कितना एक्स और वाई की वृद्धि हुई किया जाएगा की गणना को संभालने के लिए। कस्टम वैरिएबल के रूप में गति का उपयोग करना यदि आपको कस्टम स्पीड सेट भी होना चाहिए। यदि आपको अधिक गति की आवश्यकता नहीं है, तो चर को हटा दें।
और वस्तु को स्थानांतरित करने, वस्तु पर लागू होते हैं एक्स/Y:
c.drawBitmap(bm, x, y, null);
उदाहरण:
int speed = 10;
int x, y;
int targetX = 100, targetY = 600;
int startX = 900, startY = 100;
public void render(Canvas c){
super.draw(c);
float deltaX = targetX - startX;
float deltaY = targetY - startY;
float angle = Math.atan2(deltaY, deltaX);
x += speed * Math.cos(angle);//Using cos
y += speed * Math.sin(angle);//or sin
c.drawBitmap(bm, x, y, null);
(...)
}
लक्ष्य यहाँ यह एक सीधी रेखा में स्थानांतरित करने के लिए प्राप्त करने के लिए है वर्तमान स्थिति से एक लक्ष्य स्थिति तक। इसे चौकोर पार करने की तरह देखो। यह एक गेम व्यवहार है और बिना किसी प्लगइन या एड-ऑन – Zoe
के बिना संभव है कि मैं यह कहने की कोशिश कर रहा हूं कि यह उत्तर आंदोलन से संबंधित भौतिकी का ख्याल रखता है, लेकिन कैनवास पर स्वचालित नेविगेशन के अर्थ में ऐसा नहीं करना है। – Zoe
मैं अभी भी समझने की कोशिश कर रहा हूं) उदाहरण के लिए, View.java - setTranslationX (फ्लोट एक्स) से विधि का उपयोग करके, समन्वय लेता है और केवल कैनवास का उपयोग करके फिर से निकाला जाता है। आप स्थिति के आधार पर ड्राइंग कैनवास को कार्यान्वित करना चाहते हैं? – GensaGames