প্রথমত, এক্সএনএ সি #ও ব্যবহার করে তাই এটি একই প্রোগ্রামিংয়ের ভাষা। এবং যদিও অন্তর্নিহিত এপিআইয়ের ডাইরেক্টএক্স থেকে কিছু পার্থক্য থাকতে পারে, জাম্পিংয়ের সাথে এর কোনও সম্পর্ক নেই, সুতরাং একই টিউটোরিয়াল বা উত্তরগুলি এখানে প্রয়োগ করা উচিত। এছাড়াও, অনেকগুলি কারণের উপর নির্ভর করে এটি বাস্তবায়নের অসংখ্য উপায় রয়েছে। আমি নীচে যা বর্ণনা করব তা কেবল সম্ভাবনার একটি।
বেসিক ফিজিক্স প্রয়োজনীয়তা
প্রথমে আপনার আপডেট লুপে কিছু বুনিয়াদি পদার্থবিজ্ঞানের ভেরিয়েবল এবং গণনা প্রয়োজন। বিশেষত, আপনার অবস্থান, বেগ এবং মহাকর্ষের সংজ্ঞা দেওয়া দরকার এবং আপনার আপডেট লুপটি এর সাথে মোটামুটি অনুরূপ কিছু করা উচিত (সংঘর্ষ সনাক্তকরণ এবং সাবলীলতার জন্য বাদ দেওয়া):
float positionX, positionY; // Position of the character
float velocityX, velocityY; // Velocity of the character
float gravity = 0.5f; // How strong is gravity
void Update(float time)
{
positionX += velocityX * time; // Apply horizontal velocity to X position
positionY += velocityY * time; // Apply vertical velocity to X position
velocityY += gravity * time; // Apply gravity to vertical velocity
}
স্থির উচ্চতা জাম্প
আপনি যে চাপটি যতক্ষণ চাপুন না কেন, সর্বদা একই উচ্চতা সম্পন্ন একটি লাফের বাস্তবায়ন করার সহজতম উপায়টি হ'ল একবার উল্লম্ব গতি পরিবর্তন করা change এটি চরিত্রটিকে বাড়তে শুরু করবে, যখন মহাকর্ষ তাকে স্বয়ংক্রিয়ভাবে নামিয়ে আনার যত্ন নেবে:
void OnJumpKeyPressed()
{
velocityY = -12.0f; // Give a vertical boost to the players velocity to start jump
}
গুরুত্বপূর্ণ আপনার চরিত্রটি মাটিতে না থাকলে আপনি একটি লাফ শুরু করতে সক্ষম হতে চান না, সুতরাং আপনাকে এটির জন্য একটি চেক যোগ করতে হবে।
পরিবর্তনশীল উচ্চতা জাম্প
তবে মারিও এবং সোনিকের মতো গেমগুলির একটি পরিবর্তনশীল জাম্প রয়েছে যেখানে জাম্পটির উচ্চতা নির্ভর করে আপনি নীচে বোতামটি চাপুন কতক্ষণ তার উপর। এই ক্ষেত্রে আপনাকে জাম্প কী টিপতে এবং ছেড়ে দিতে উভয়ই পরিচালনা করতে হবে । আপনি এর মতো কিছু যুক্ত করতে পারেন:
void OnJumpKeyReleased()
{
if(velocityY < -6.0f) // If character is still ascending in the jump
velocityY = -6.0f; // Limit the speed of ascent
}
উপরের কোডে এই সমস্ত মান (যেমন সংখ্যার মতো 0.5
, -12.0f
বা -6.0f
) গুলিকে টিকেট দেওয়া আপনি নিজের লাফের অনুভূতি পরিবর্তন করতে পারেন, তিনি কতটা উঁচুতে লাফান, জাম্প বোতামটি প্রকাশ করার পরেও তিনি কতটা গতি বজায় রাখেন, তিনি কতটা দ্রুত পড়ে যান ইত্যাদি etc ।
গুরুত্বপূর্ণ এই ফাংশনগুলিকে প্রতি ফ্রেমে কল করবেন না। কীটি চাপলে বা ছেড়ে দেওয়া হলে কেবল একবার তাদের কল করুন। অন্যথায় আপনার চরিত্রটি জাম্পের পরিবর্তে উড়ে যাবে।
কাজের উদাহরণ
আমি উপরে বর্ণিত কৌশলগুলির একটি দ্রুত উদাহরণ তৈরি করেছি, যা আপনি এখানে আপনার ব্রাউজারে চেষ্টা করতে পারেন (লাফানোর জন্য মাউস বোতাম টিপুন, লাফের উচ্চতা নিয়ন্ত্রণ করতে মাঝখানে এটি ছেড়ে দিন)। এটি জেএসে রয়েছে তবে আমি আগে যেমন বলেছি ভাষা এই ক্ষেত্রে অপ্রাসঙ্গিক।
http://jsfiddle.net/LyM87/