2013-02-21 30 views
5

पर धीरे-धीरे मेरे अभिनेता को एनिमेट करना चाहते हैं। मैं बीलिबडक्स क्रियाएं => धीरे-धीरे एक्टर से बिंदु ए 0 बिंदु बी

addAction(Actions.sequence(Actions.moveBy(1, 1), Actions.moveTo(posX, posY))); 

बात करने के लिए बिंदु A से अभिनेता को स्थानांतरित करने के लिए इस कार्रवाई जोड़ा इसके अलावा इस (10 सेकंड में moveTo) की कोशिश की:

addAction(Actions.moveTo(posX, posY, 10))); 

लेकिन अभिनेता बहुत तेजी से बढ़ता रहता है। क्या गलत है?

+0

आप कर सकते हैं इसके लिए [यूनिवर्सल ट्विन इंजन] (https://github.com/AurelienRibon/universal-tween-engine) का भी उपयोग करें। Sprites के लिए भी काम करता है और कई कार्यों है। मुझे एक सुराग देने के लिए – trinity420

उत्तर

10

दूसरा रूप:

addAction(Actions.moveTo(posX, posY, 10))); 

10 सेकंड के पाठ्यक्रम पर posX, कहावत करने के लिए अपने अभिनेता बढ़ना चाहिए।

पहला फॉर्म अभिनेता 1-चरण में एक्स और वाई में स्थानांतरित करेगा, और उसके बाद अभिनेता को तुरंत पॉक्सएक्स, पॉजि में ले जाया जाएगा। Actions.sequence दिए गए कार्यों को एक दूसरे के बाद चलाता है, वे एक-दूसरे को संशोधित नहीं करते हैं।

मंच पर act() पर आप (और कहां) कह रहे हैं? यह निर्धारित करता है कि फ्रेम में Actor को कितना अपडेट करना है, इसलिए यदि आप इसे प्रति फ्रेम कई बार कहते हैं या गलत मान पास करते हैं, तो क्रियाएं बहुत जल्दी गुजरती हैं।

+0

+1। – Alf

4

सिर्फ इसलिए कि जब मैंने 'लिबडक्स मूव टू पॉइंट' की खोज की तो मेरा उत्तर शीर्ष पर था, मैं यहां एक समाधान पोस्ट करूंगा।

यहाँ एक समाधान है, विशेष रूप से नहीं एक्टर्स के लिए है:

क्लास में Vector2 चर परिभाषित करें, इन वस्तु स्थिति के लिए उपयोग किया जाएगा:

protected Vector2 v2Position; 
protected Vector2 v2Velocity; 

स्थिति में सेट किया गया है कन्स्ट्रक्टर या कहीं और। वस्तु का वेग हो और भी बिंदु पर ले जाते हैं करने के लिए:

public void setVelocity (float toX, float toY) { 

// The .set() is setting the distance from the starting position to end position 
v2Velocity.set(toX - v2Position.x, toY - v2Position.y); 
v2Velocity.nor(); // Normalizes the value to be used 

v2Velocity.x *= speed; // Set speed of the object 
v2Velocity.y *= speed; 
} 

अब बस वेग स्थिति के लिए जोड़ सकते हैं और वस्तु भी बिंदु पर आ जाएगा

@Override public void update() { 
    v2Position.add (v2Velocity); // Update position 
} 
+0

धन्यवाद, यह मुझे सही दिशा में इंगित किया। अद्यतन विधि में मैंने 'v2Position.lerp (v2Velocity) किया; 'क्योंकि मुझे किसी विशिष्ट स्थिति पर जाने और रोकने के लिए ऑब्जेक्ट की आवश्यकता थी। – Raf