জাম্প কীটি বেশিক্ষণ ধরে রাখলে কীভাবে আমি প্লেয়ারকে উচ্চতর করতে পারি? কীটি ধরে রাখা এবং প্লেয়ারটি লাফিয়ে চলেছে যতক্ষণ না আমি বর্তমানে মাধ্যাকর্ষণ কমিয়ে দিচ্ছি তবে এটি অদ্ভুত দেখাচ্ছে।
জাম্প কীটি বেশিক্ষণ ধরে রাখলে কীভাবে আমি প্লেয়ারকে উচ্চতর করতে পারি? কীটি ধরে রাখা এবং প্লেয়ারটি লাফিয়ে চলেছে যতক্ষণ না আমি বর্তমানে মাধ্যাকর্ষণ কমিয়ে দিচ্ছি তবে এটি অদ্ভুত দেখাচ্ছে।
উত্তর:
প্রথমে আপনাকে সিদ্ধান্ত নিতে হবে আপনি কীভাবে জাম্পটি দেখতে চান।
বাস্তব জীবনে, আপনি মাটি ছেড়ে যাওয়ার মুহুর্তে জাম্পের উচ্চতা স্থির করা হয়। আপনি ইতিমধ্যে মধ্য-বায়ুতে থাকা অবস্থায় উচ্চতর লাফানো রাখতে পারবেন না।
সুতরাং আপনি যদি ইতিমধ্যে বাতাসে থাকা অবস্থায় আপনার জাম্পের উচ্চতা নিয়ন্ত্রণ করতে পারেন তবে আপনি কিছু ধরণের "জেট-প্যাক" -র মতো প্রভাব পেতে চলেছেন।
আমার মনে হয় এমন একটি পার্সক্রোলার মনে আছে যার দুটি পৃথক জাম্প উচ্চতা ছিল, আমি মনে করি এটি একটি সুপার মারিও গেমগুলির মধ্যে একটি was আপনি যখন জাম্প বোতামটি ধরেছিলেন তখন উচ্চতর জাম্পটি ঘটেছিল এবং প্রাথমিকভাবে নিয়মিত লাফ দিয়ে শুরু করে লাফটি তখন একটি দুটি অংশের লাফ ছিল, তারপরে দ্বিতীয় উত্সব যা আপনাকে আরও উপরে নিয়ে যায়।
তাহলে, আপনি নিজের জাম্পটি দেখতে কেমন চান? আপনি খেলোয়াড়ের লাফানোর উপর কোন ধরণের নিয়ন্ত্রণ রাখতে চান?
আমি যা দিয়ে এটি শুরু করব তা হ'ল:
মহাকর্ষকে একা ছেড়ে যান (অর্থাত্ এটি কখনই পরিবর্তন করবেন না)। যখন কোনও প্লেয়ার জাম্প বোতাম টিপায়, প্লেয়ার যতক্ষণ না জাম্প বোতাম টিপছে ততক্ষণ জাম্প ফোর্সটি প্রয়োগ করুন (কিছু সময়ের সীমা)। তারপরে যখন প্লেয়ারটি জাম্প বোতামটি ছেড়ে দেয়, তখন সে প্রথম কোনও জম্প ফোর্স প্রয়োগ করতে পারে না (যেমন সে আবার কোনও লাফ শুরু করতে পারে না) যতক্ষণ না তিনি প্রথম স্থলটিতে স্পর্শ না করে, সেই মুহূর্তে জাম্পগুলি পুনরায় সক্ষম হয়।
super meat boy
মনে করেন যে আপনার পছন্দ মতো একই জাম্পের প্রভাব রয়েছে, মনে হয় যতক্ষণ আপনি জাম্প বোতামটি ধরে রাখেন চরিত্রের সাথে একটি বল প্রয়োগ করা হয়, এটি মাধ্যাকর্ষণ বিপরীতে এবং এর চেয়ে ছোট হয় এবং বিশ্রাম আলহভস্কি যা বলেছিল তার মতোই like যদি আমি এরকম কিছু বাস্তবায়ন করি তবে আমি জাম্পিং শক্তি হিসাবে 60% -80% মহাকর্ষের মতো কিছু দিয়ে শুরু করব।
আমি কিছু লোককে এটি করতে দেখেছি:
একটি ভেরিয়েবল তৈরি করুন (আমি এটি কল করব jumpTime
) (নম্বর / ডাবল / ফ্লোট)। যখন জাম্প কী টিপানো jumpTime
হয় তখন কয়েকটি সংখ্যায় সেট করুন (যেমন 0.5
। এটি জাম্প কী ধরে রাখার ফলে সেকেন্ডের সংখ্যা হবে)।
তারপর, ধাপে ধাপে জন্য, বেগ সেট jumpTime
কিছু অন্যান্য সংখ্যা দ্বারা গুন, এবং হ্রাস jumpTime
দ্বারা delta
(প্রতিটি পদক্ষেপ মধ্যে সময় পার্থক্য)।
jumpTime
শূন্য বা নীচে না পৌঁছানো বা প্লেয়ার যখন জাম্প কীটি প্রকাশ করে ততক্ষণ পুনরাবৃত্তি করুন । এটি হওয়ার পরে, সাধারণ পদার্থবিজ্ঞান ব্যবহার করুন (প্লেয়ার মাটিতে না পৌঁছানো পর্যন্ত ধ্রুবক নেতিবাচক ত্বরণ প্রয়োগ করুন)।
আপনি "কীভাবে কিছু সংখ্যক" এর উপযুক্ত মানগুলি খুঁজে পেতে পরীক্ষা এবং ত্রুটি (বা "লজিক্যাল অনুমান") ব্যবহার করতে পারেন, যদি না আপনি কীভাবে এটি করতে জানেন তবে।
আপডেট: আমি এমন কৌশলটি পেয়েছি যা লাফটি আরও খানিকটা বাস্তবসম্মত করে তোলে (যেহেতু এটি মূলত ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে এগিয়ে যায়)। অসীম মারিও নীচের লাইনটি (জাভাস্ক্রিপ্ট সংস্করণের ক্যারেক্টার.জেস এর 293) ব্যবহার করে ... this.Ya *= 0.85;
এটি কেবল "বায়ু টানা" এর মতো এবং মধ্য বায়ুতে অক্ষরের গতি সীমাবদ্ধ / গতি কমিয়ে দেয়। সুতরাং প্রতিটি ফ্রেম, y- বেগ (উল্লম্ব গতি) একের চেয়ে কম সংখ্যায় গুণিত করুন যাতে পিছনে নেমে যাওয়ার সময় এটি ধীর হয়ে যায় (এবং অতএব উভয় একটি লাফের সময় উপরের দিকে এবং নীচে যেতে হবে একই এবং আরও বাস্তববাদী হবে)। আমি জানি, আমি ব্যাখ্যা করাতে খারাপ ...
চরিত্রটি যখন মূলত উপরে বর্ণিত পদ্ধতিটি ব্যবহার করে লাফিয়ে যায়, তখন এটি "উপরে উঠে" দ্রুত এবং "নীচের দিকে পিছনে পড়ে" থাকে। টানাটি অবশ্য উল্লম্ব গতি কমিয়ে দেয়। যেহেতু আমরা উলম্ব গতিটি jumpTime
প্রতিটি ফ্রেমের সমানুপাতিক হিসাবে সেট করেছি তাই এই টানাটি জাম্পিংয়ের প্রথমার্ধে খুব বেশি প্রভাব ফেলবে না। তবে পরের অর্ধে (নীচের দিকে পিছনে পড়া), উলম্ব গতি প্রতিটি ফ্রেম সেট করা হয় না, তবে কেবল অন্য সংখ্যা দ্বারা যুক্ত করা হয় (এই ক্ষেত্রে এটি মহাকর্ষীয় ধ্রুবক)। সুতরাং, টানাটি পতনের ক্ষেত্রে কার্যকর হয় এবং যেহেতু এটি গতি হ্রাস করে (যে কোনও দিকে), এটি পতনের গতি কমিয়ে দেয়, এটি প্রথমার্ধের মতো করে তোলে।
এই সমস্যাটি সমাধানের অন্যান্য উপায় রয়েছে যেমন, চরিত্রের উপর মহাকর্ষের প্রভাব পড়ার সাথে সাথে হ্রাস পাওয়ার মতো। তবে আমাদের কতটা মহাকর্ষ হ্রাস করা উচিত তা আমাদের খুঁজে বের করতে হবে।
এটিই আমি পেয়েছি (মারকাস পার্সসনের (খাঁজ) মারিও.জভা 206 লাইন থেকে):
if (keys[KEY_JUMP] || (jumpTime < 0 && !onGround && !sliding))
{
if (jumpTime < 0)
{
xa = xJumpSpeed;
ya = -jumpTime * yJumpSpeed;
jumpTime++;
}
else if (onGround && mayJump)
{
world.sound.play(Art.samples[Art.SAMPLE_MARIO_JUMP], this, 1, 1, 1);
xJumpSpeed = 0;
yJumpSpeed = -1.9f;
jumpTime = 7;
ya = jumpTime * yJumpSpeed;
onGround = false;
sliding = false;
}
else if (sliding && mayJump)
{
world.sound.play(Art.samples[Art.SAMPLE_MARIO_JUMP], this, 1, 1, 1);
xJumpSpeed = -facing * 6.0f;
yJumpSpeed = -2.0f;
jumpTime = -6;
xa = xJumpSpeed;
ya = -jumpTime * yJumpSpeed;
onGround = false;
sliding = false;
facing = -facing;
}
else if (jumpTime > 0)
{
xa += xJumpSpeed;
ya = jumpTime * yJumpSpeed;
jumpTime--;
}
}
else
{
jumpTime = 0;
}
জাভাস্ক্রিপ্ট সংস্করণটি মূলত একই https://github.com/robertkleffner/mariohtml5/blob/master/code/character.js
এটি ওলোভস্কির পরামর্শের অনুরূপ, তবে এই ক্ষেত্রে খেলোয়াড়টি জাম্প কী টিপানোর পরে এই সময়টি যে পরিমাণ সময় পার হয়ে যায় তার সমানুপাতিক হবে।
if ( onGround && jump && !jumped ) {
jumpTime = maxJumpTime;
onGround = false;
jumped = true;
this.vel.y = jumpTime * jumpConstant;
A = true;
} else if ( !onGround && jump && jumpTime > 0 && !released ) {
jumpTime -= evt.delta;
this.vel.y = jumpTime * jumpConstant;
B = true;
} else if ( !onGround && ( !jump || jumpTime <= 0 ) ) {
this.vel.y -= gravityConstant * evt.delta;
jumpTime = 0
released = true;
} if ( this.pos.y < 0 && !A && !B ) {
onGround = true;
released = false;
this.pos.y = 0;
this.vel.y = 0;
}
if ( !jump && onGround ) jumped = false;
যাইহোক, ধ্রুবকগুলির জন্য কিছু মান (যেমন "গ্র্যাভিটিস কনস্ট্যান্ট" এবং "জাম্প কনস্ট্যান্ট") যদিও অবাস্তব ঝাঁপ দেবে। তবে কখনও কখনও গেমগুলি বাস্তবসম্মত হতে হয় না! ( আপডেট উপরে আপডেট বিভাগ দেখুন)
এই প্রশ্নটি ইতিমধ্যে এক বছরেরও বেশি পুরানো, তবে আমি আশা করি এটি সাহায্য করবে!
ওলহোভস্কি যেমন বলেছেন, আপনি মাটি ছাড়ার মুহুর্তের পরে জাম্পের উচ্চতা স্থির করা হবে, তার পরে নয়।
আপনি যদি সত্যিই জেটপ্যাকের প্রভাবটি এড়াতে চান তবে আমি কেবল দুটি উপায় দেখতে পাচ্ছি: উচ্চতর লাফানোর একটি মূল সমন্বয় , বা জাম্প কীটি কাজ করে তার মূলত পরিবর্তন:
কীটি টিপানোর সাথে সাথে খেলোয়াড়কে লাফিয়ে তোলার পরিবর্তে, চাবিটি মুক্তি না দেওয়া পর্যন্ত জাম্পটি বিলম্ব করুন । সুতরাং মূলত কী প্রেসের সময়কাল নিয়ন্ত্রণ করে যে প্লেয়ারের পায়ে বসন্তের উত্তেজনা কতটা বাড়ানো হয়েছে এবং পরবর্তীকালে প্রকাশিত হবে।
অবশ্যই, এটি মৌলিকভাবে গেম মেকানিকগুলিকে পরিবর্তিত করে এবং প্লেয়ারের জন্য এটি অপরিচিত হতে পারে। তবে প্রভাবটি বেশ আকর্ষণীয় হতে পারে এবং এটি অপরিচিতের জন্য উপযুক্ত হতে পারে।
" একটি চরিত্রের লাফানো কীভাবে করা যায়? " এই প্রশ্নের উত্তরটিতে আমি ডেভিড গাউভিয়ার উত্তরের আরও একটি সমাধান পেয়েছি ?
তার ধারণাটি ছিল যখন খেলোয়াড়টি জাম্প বোতামটি চাপ দেয় তখন একটি বেগ নির্ধারণ করা হত। প্রতিটি ফ্রেমে এটি কেবল মাধ্যাকর্ষণ গণনা করে। যাইহোক, প্লেয়ারটি বোতামটি ছেড়ে দিলে, বেগটি তার চেয়ে বেগ বেশি হলে এটি একটি ছোট মানকে সেট করে। বেগ কেবল প্রতিটি ফ্রেমকে মাধ্যাকর্ষণ দ্বারা হ্রাস করা হয় mented
আমি তার উত্তর চুরি করা উচিত নয়, তাই এগিয়ে যান এবং তার পোস্ট পড়ুন। তার সমাধানটি " ভেরিয়েবল হাইট জাম্প " বিভাগের অধীনে।
সত্যিই লোকেরা এই সমস্যাটি সমাধান করার বিভিন্ন উপায় নিয়ে এসেছিল ...
http://excitemike.com/JumpingControlTester (বিভিন্ন গেমের বিভিন্ন জাম্পিং পদ্ধতি চিত্রিত করে)
http://meyermike.com/wp/?p=175 (মারিওর জাম্পের পথ নিয়েও আলোচনা করে)
http://www.flatredball.com/frb/docs/index.php?title= টিউটোরিয়ালস: প্ল্যাটফায়ার: পরিবর্তনশীল- উচ্চতা_জম্পস (3 টি পৃথক পদ্ধতি বর্ণনা করে)
সম্ভবত আরও বেশি (খুব বেশি অনুসন্ধান ফলাফলের মধ্য দিয়ে যায় নি, তবে "ভেরিয়েবল জাম্পের উচ্চতা" গুগল করতে সহায়তা করে)