পার্শ্বের স্ক্রোলারগুলিতে পরিবর্তনশীল উচ্চতা জাম্পিং


10

জাম্প কীটি বেশিক্ষণ ধরে রাখলে কীভাবে আমি প্লেয়ারকে উচ্চতর করতে পারি? কীটি ধরে রাখা এবং প্লেয়ারটি লাফিয়ে চলেছে যতক্ষণ না আমি বর্তমানে মাধ্যাকর্ষণ কমিয়ে দিচ্ছি তবে এটি অদ্ভুত দেখাচ্ছে।


আপনি কেবল কতটা মহাকর্ষ হ্রাস করতে পারবেন তার মধ্যে কিছু সংশোধন করার মাধ্যমে আপনি আরও ভাল জাম্পের ক্রিয়া পান।
Ali1S232

@ গেজেট এটি বরং চতুর এবং এটি করার একটি অদ্ভুত উপায় বলে মনে হচ্ছে।
কমিউনিস্ট হাঁস

হুম আপনি বলছেন মাধ্যাকর্ষণ হ্রাস করার অর্থ এই নয় যে আপনি পদার্থবিজ্ঞানের ইঞ্জিন ব্যবহার করছেন। এই ঘটনা কি? আপনি কি ঝাঁপ দাও?
জোনাথন কনেল

কোনও পদার্থবিজ্ঞানের ইঞ্জিন নেই, এবং আমি ইমপালসগুলি ব্যবহার করছি না
জন

কোন ক্ষেত্রে আপনার প্লেয়ার কীভাবে পড়ে? আপনি কি কেবল একটি আন্দোলন * জাম্প * মাধ্যাকর্ষণ ভেক্টর অনুসারে তার অবস্থানটি অনুবাদ করেন?
জোনাথন কনেল

উত্তর:


9

প্রথমে আপনাকে সিদ্ধান্ত নিতে হবে আপনি কীভাবে জাম্পটি দেখতে চান।

বাস্তব জীবনে, আপনি মাটি ছেড়ে যাওয়ার মুহুর্তে জাম্পের উচ্চতা স্থির করা হয়। আপনি ইতিমধ্যে মধ্য-বায়ুতে থাকা অবস্থায় উচ্চতর লাফানো রাখতে পারবেন না।

সুতরাং আপনি যদি ইতিমধ্যে বাতাসে থাকা অবস্থায় আপনার জাম্পের উচ্চতা নিয়ন্ত্রণ করতে পারেন তবে আপনি কিছু ধরণের "জেট-প্যাক" -র মতো প্রভাব পেতে চলেছেন।

আমার মনে হয় এমন একটি পার্সক্রোলার মনে আছে যার দুটি পৃথক জাম্প উচ্চতা ছিল, আমি মনে করি এটি একটি সুপার মারিও গেমগুলির মধ্যে একটি was আপনি যখন জাম্প বোতামটি ধরেছিলেন তখন উচ্চতর জাম্পটি ঘটেছিল এবং প্রাথমিকভাবে নিয়মিত লাফ দিয়ে শুরু করে লাফটি তখন একটি দুটি অংশের লাফ ছিল, তারপরে দ্বিতীয় উত্সব যা আপনাকে আরও উপরে নিয়ে যায়।

তাহলে, আপনি নিজের জাম্পটি দেখতে কেমন চান? আপনি খেলোয়াড়ের লাফানোর উপর কোন ধরণের নিয়ন্ত্রণ রাখতে চান?

আমি যা দিয়ে এটি শুরু করব তা হ'ল:

মহাকর্ষকে একা ছেড়ে যান (অর্থাত্ এটি কখনই পরিবর্তন করবেন না)। যখন কোনও প্লেয়ার জাম্প বোতাম টিপায়, প্লেয়ার যতক্ষণ না জাম্প বোতাম টিপছে ততক্ষণ জাম্প ফোর্সটি প্রয়োগ করুন (কিছু সময়ের সীমা)। তারপরে যখন প্লেয়ারটি জাম্প বোতামটি ছেড়ে দেয়, তখন সে প্রথম কোনও জম্প ফোর্স প্রয়োগ করতে পারে না (যেমন সে আবার কোনও লাফ শুরু করতে পারে না) যতক্ষণ না তিনি প্রথম স্থলটিতে স্পর্শ না করে, সেই মুহূর্তে জাম্পগুলি পুনরায় সক্ষম হয়।


আমি এটি চেষ্টা করেছি এবং আমি জেটপ্যাকের প্রভাব পেয়েছি। আমি ভাবছিলাম যে এটি এড়ানোর কোনও উপায় আছে কিনা?
জন স্টিম্যাক

1
আপনার মনে থাকা গেমটি নাও হতে পারে, তবে সুপার মারিও 2 তে আপনি ঝাঁপ দেওয়ার আগে কিছুটা হাঁস খেয়ে উঁচুতে উঠেছিলেন। (যা কিছুটা স্বজ্ঞাত অর্থে তৈরি হয়, যেহেতু আপনি যদি স্থায়ী অবস্থান থেকে সরাসরি চেষ্টা করার চেষ্টা করেন তবে আপনি খুব বেশি লাফান না))
দরিয়েন

3
জকিউবেড: বেগকে শক্তি যোগ করার পরিবর্তে বলটিকে সরাসরি পজিশনে যুক্ত করার চেষ্টা করুন। তারপরে প্লেয়ারটি একসিলিটারিং আপের পরিবর্তে রৈখিকভাবে উপরে চলে যাবে।
ওলোভস্কি

@ জ্যাকুবেড: এমন কিছু গেম খেললে যখন আপনি super meat boyমনে করেন যে আপনার পছন্দ মতো একই জাম্পের প্রভাব রয়েছে, মনে হয় যতক্ষণ আপনি জাম্প বোতামটি ধরে রাখেন চরিত্রের সাথে একটি বল প্রয়োগ করা হয়, এটি মাধ্যাকর্ষণ বিপরীতে এবং এর চেয়ে ছোট হয় এবং বিশ্রাম আলহভস্কি যা বলেছিল তার মতোই like যদি আমি এরকম কিছু বাস্তবায়ন করি তবে আমি জাম্পিং শক্তি হিসাবে 60% -80% মহাকর্ষের মতো কিছু দিয়ে শুরু করব।
Ali1S232

1
আমি সর্বদা এটি করি, আপনি ঠিক সেই সময়টি বজায় রাখুন যে সময়ে আপনি জাম্পিংয়ের উপরের গতিটি বাটনটি ধরে রেখে যথেষ্ট সংক্ষিপ্ত করে রাখুন যাতে এটি কোনও লক্ষণীয় জেট প্যাকের প্রভাব নয় - তবে এটি সুপার মারিওর মতো হয়ে উঠবে কয়েকটি জাদু সহ সংখ্যা টুইট। "বল" আরও ছোট করবেন না, লাফটি হিফারটাইমটির মেয়াদ শেষ না হওয়া বা প্লেয়ার বোতামটি প্রকাশ না করা পর্যন্ত কেবল সর্বোচ্চ সর্বাধিক জাম্পস্পিডে পুনরায় সেট করতে থাকুন ... এছাড়াও, আমি সুপার মাংসের ছেলেরা লাফিয়ে লাফিয়ে লাফিয়ে উঠি এবং বিরক্তিকর বলে মনে করি, যেমন কোনও প্ল্যাটফর্ম ঝাঁপিয়ে পড়ে যা কেবলমাত্র পদার্থবিজ্ঞানের ইঞ্জিনের উপর নির্ভর করে; পি
ওসকার ডুভের্বন

7

আমি কিছু লোককে এটি করতে দেখেছি:

  1. একটি ভেরিয়েবল তৈরি করুন (আমি এটি কল করব jumpTime) (নম্বর / ডাবল / ফ্লোট)। যখন জাম্প কী টিপানো jumpTimeহয় তখন কয়েকটি সংখ্যায় সেট করুন (যেমন 0.5। এটি জাম্প কী ধরে রাখার ফলে সেকেন্ডের সংখ্যা হবে)।

  2. তারপর, ধাপে ধাপে জন্য, বেগ সেট jumpTimeকিছু অন্যান্য সংখ্যা দ্বারা গুন, এবং হ্রাস jumpTimeদ্বারা delta(প্রতিটি পদক্ষেপ মধ্যে সময় পার্থক্য)।

  3. 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;

যাইহোক, ধ্রুবকগুলির জন্য কিছু মান (যেমন "গ্র্যাভিটিস কনস্ট্যান্ট" এবং "জাম্প কনস্ট্যান্ট") যদিও অবাস্তব ঝাঁপ দেবে। তবে কখনও কখনও গেমগুলি বাস্তবসম্মত হতে হয় না! ( আপডেট উপরে আপডেট বিভাগ দেখুন)

এই প্রশ্নটি ইতিমধ্যে এক বছরেরও বেশি পুরানো, তবে আমি আশা করি এটি সাহায্য করবে!


2

ওলহোভস্কি যেমন বলেছেন, আপনি মাটি ছাড়ার মুহুর্তের পরে জাম্পের উচ্চতা স্থির করা হবে, তার পরে নয়।

আপনি যদি সত্যিই জেটপ্যাকের প্রভাবটি এড়াতে চান তবে আমি কেবল দুটি উপায় দেখতে পাচ্ছি: উচ্চতর লাফানোর একটি মূল সমন্বয় , বা জাম্প কীটি কাজ করে তার মূলত পরিবর্তন:

কীটি টিপানোর সাথে সাথে খেলোয়াড়কে লাফিয়ে তোলার পরিবর্তে, চাবিটি মুক্তি না দেওয়া পর্যন্ত জাম্পটি বিলম্ব করুন । সুতরাং মূলত কী প্রেসের সময়কাল নিয়ন্ত্রণ করে যে প্লেয়ারের পায়ে বসন্তের উত্তেজনা কতটা বাড়ানো হয়েছে এবং পরবর্তীকালে প্রকাশিত হবে।

অবশ্যই, এটি মৌলিকভাবে গেম মেকানিকগুলিকে পরিবর্তিত করে এবং প্লেয়ারের জন্য এটি অপরিচিত হতে পারে। তবে প্রভাবটি বেশ আকর্ষণীয় হতে পারে এবং এটি অপরিচিতের জন্য উপযুক্ত হতে পারে।


2
আমি মনে করি আমি ঠিক সেই যান্ত্রিকের সাথে কিছু প্ল্যাটফর্মার খেলছি - আপনি লাফটি "চার্জ" না করা পর্যন্ত মাটি ছেড়ে যাবেন না the কিছু চমত্কার অ্যানিমেশন (যেমন চরিত্রের পায়ে ধুলো মেঘ বাড়ছে) দিয়ে স্বজ্ঞাত বোধ করার জন্য এটি করা যেতে পারে।
জারি কম্প্পা

2

" একটি চরিত্রের লাফানো কীভাবে করা যায়? " এই প্রশ্নের উত্তরটিতে আমি ডেভিড গাউভিয়ার উত্তরের আরও একটি সমাধান পেয়েছি ?

সারসংক্ষেপ:

তার ধারণাটি ছিল যখন খেলোয়াড়টি জাম্প বোতামটি চাপ দেয় তখন একটি বেগ নির্ধারণ করা হত। প্রতিটি ফ্রেমে এটি কেবল মাধ্যাকর্ষণ গণনা করে। যাইহোক, প্লেয়ারটি বোতামটি ছেড়ে দিলে, বেগটি তার চেয়ে বেগ বেশি হলে এটি একটি ছোট মানকে সেট করে। বেগ কেবল প্রতিটি ফ্রেমকে মাধ্যাকর্ষণ দ্বারা হ্রাস করা হয় mented

আমি তার উত্তর চুরি করা উচিত নয়, তাই এগিয়ে যান এবং তার পোস্ট পড়ুন। তার সমাধানটি " ভেরিয়েবল হাইট জাম্প " বিভাগের অধীনে।

সত্যিই লোকেরা এই সমস্যাটি সমাধান করার বিভিন্ন উপায় নিয়ে এসেছিল ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.