আমার স্প্রাইটের আন্দোলনে এক্সট্রাপোলেশন প্রয়োগ করার আগে, আমার সংঘর্ষ পুরোপুরি কার্যকর হয়েছিল। যাইহোক, আমার স্প্রাইটের চলাচলে (জিনিসগুলি মসৃণ করতে) এক্সট্রাপোলেশন প্রয়োগ করার পরে, সংঘর্ষটি আর কাজ করে না।
এক্সট্রা পোপুলেশনের আগে জিনিসগুলি এভাবে কাজ করেছিল:
যাইহোক, আমি আমার এক্সট্রাপোলেশনটি প্রয়োগ করার পরে, সংঘর্ষের রুটিনটি ভেঙে যায়। আমি ধরে নিচ্ছি কারণ এটি এক্সট্রাপোলেশন রুটিন দ্বারা উত্পাদিত নতুন স্থানাঙ্কের (যা আমার রেন্ডার কলটিতে অবস্থিত) কাজ করছে upon
আমি আমার এক্সট্রাপোলেশন প্রয়োগ করার পরে
এই আচরণটি কীভাবে সংশোধন করবেন?
আমি এক্সট্রাপোলেশনের ঠিক পরে অতিরিক্ত সংঘর্ষের চেক লাগানোর চেষ্টা করেছি - এটি অনেক সমস্যার সমাধান করবে বলে মনে হচ্ছে তবে আমি এটিকে বাতিল করে দিয়েছি কারণ আমার রেন্ডারিংয়ে যুক্তি যুক্ত করা প্রশ্নের বাইরে নয়।
আমি স্প্রিটেক্সএক্স পজিশনের একটি অনুলিপি তৈরি করার চেষ্টাও করেছি, এটি এক্সট্রাপোলেটিং করে এবং অঙ্কনটি মূলটির চেয়ে বরং অঙ্কন করেছি, সুতরাং যুক্তিটির পক্ষে মূল অক্ষত রেখে দেওয়া - এটি একটি ভাল বিকল্প বলে মনে হয়, তবে এটি এখনও কিছু অদ্ভুত প্রভাব তৈরি করে যখন দেয়াল সঙ্গে সংঘর্ষ। আমি নিশ্চিত যে এটিও এর সাথে মোকাবিলা করার সঠিক উপায় নয়।
আমি এখানে বেশ কয়েকটি অনুরূপ প্রশ্ন পেয়েছি কিন্তু উত্তরগুলি আমাকে সাহায্য করেনি।
এটি আমার এক্সট্রা পোলেশন কোড:
public void onDrawFrame(GL10 gl) {
//Set/Re-set loop back to 0 to start counting again
loops=0;
while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){
SceneManager.getInstance().getCurrentScene().updateLogic();
nextGameTick+=skipTicks;
timeCorrection += (1000d/ticksPerSecond) % 1;
nextGameTick+=timeCorrection;
timeCorrection %=1;
loops++;
tics++;
}
extrapolation = (float)(System.currentTimeMillis() + skipTicks - nextGameTick) / (float)skipTicks;
render(extrapolation);
}
এক্সট্রাপোলেশন প্রয়োগ করা
render(float extrapolation){
//This example shows extrapolation for X axis only. Y position (spriteScreenY is assumed to be valid)
extrapolatedPosX = spriteGridX+(SpriteXVelocity*dt)*extrapolation;
spriteScreenPosX = extrapolationPosX * screenWidth;
drawSprite(spriteScreenX, spriteScreenY);
}
সম্পাদন করা
আমি উপরে উল্লিখিত হিসাবে, আমি স্প্রাইটের স্থানাঙ্কগুলির একটি অনুলিপিটি বিশেষভাবে আঁকার জন্য তৈরি করার চেষ্টা করেছি .... এটির নিজস্ব সমস্যা রয়েছে।
প্রথমত, অনুলিপিটি নির্বিশেষে, স্প্রাইটটি যখন চলমান হয়, তখন এটি খুব মসৃণ হয়, যখন এটি থামে, এটি সামান্য বাম / ডানদিকে ঘুরপাক খাচ্ছে - কারণ এটি এখনও সময়ের ভিত্তিতে নিজের অবস্থানকে বহির্মুখী করে তুলছে। এটি কি স্বাভাবিক আচরণ এবং স্প্রাইট বন্ধ হয়ে গেলে আমরা কি 'এটি বন্ধ' করতে পারি?
আমি বাম / ডানদিকের জন্য পতাকা রাখার চেষ্টা করেছি এবং যদি এর মধ্যে দুটি সক্ষম হয় তবে কেবল এক্সট্রাপোলেটিং। আমি কোনও পার্থক্য আছে কিনা তা দেখার জন্য আমি সর্বশেষ এবং বর্তমান অবস্থানগুলি অনুলিপি করার চেষ্টা করেছি। তবে সংঘর্ষ যতদূর যায় এগুলি সাহায্য করে না help
যদি ব্যবহারকারীটি টিপতে থাকে, ডান বোতামটি এবং স্প্রাইটটি ডানদিকে চলে যাচ্ছে, যখন এটি কোনও দেয়ালের সাথে আঘাত করে, ব্যবহারকারী যদি ডান বোতামটি ধরে রাখেন, স্প্রাইটটি ডানদিকে অ্যানিমেটিং চালিয়ে যাবে, যখন প্রাচীর দ্বারা থামানো হবে ( তবে প্রকৃতপক্ষে চলমান নয়) তবে ডান পতাকা এখনও সেট করা আছে এবং সংঘর্ষের রুটিনটি ক্রমাগত দেওয়াল থেকে স্প্রিটকে সরিয়ে নিয়ে যাওয়ার কারণে এটি স্প্রাইডটি এখনও চলছে বলে কোডটিতে প্রদর্শিত হয় (প্লেয়ার নয়) এবং তাই এক্সট্রাপোলেশন অবিরত। সুতরাং খেলোয়াড়টি যা দেখতে পাবে তা হ'ল স্প্রাইট 'স্ট্যাটিক' (হ্যাঁ, এটি অ্যানিমেট করা হচ্ছে, তবে এটি আসলে পর্দা জুড়ে চলছে না), এবং প্রতিবার এবং পরে এটি হস্তান্তরিতভাবে কাঁপতে থাকে যেহেতু এক্সট্রাপোলেশন এটি করার চেষ্টা করে ..... .. এই সাহায্য আশা করি