আমি কীভাবে হতাশাকে বাস্তবায়ন করব?


11

আমি "হ্রাস" বলি কারণ আমি এই মুহুর্তে ত্বরণ ব্যবহার করছি না; আমার অর্থ গতিটি শূন্যের দিকে ফিরে যাচ্ছে, শেষ পর্যন্ত থামছে।

আমি ভেক্টরগুলিতে নতুন এবং পদার্থবিজ্ঞান এবং এ জাতীয়গুলির সাথে এত দুর্দান্ত নই। সাধারণত "হ্রাস" কীভাবে পরিচালনা করা হয়?


আমার এখন যা আছে তা কাজ করে তবে এটি একধরণের হাকিস বলে মনে হয় ।

update:function(Game, t, dt) {
    var speed = Game.Input.isKeyDown('shift') ? 8 : 4;

    if (Game.Input.isKeyDown('a')) {
        this.velocity.i -= speed;
    }
    else if (Game.Input.isKeyDown('d')) {
        this.velocity.i += speed;
    }
    else {
        if (Math.abs(this.velocity.i) > 3) {
            this.velocity.i += (this.velocity.i > 0) ? -speed : speed;
        }
        else {
            this.velocity.i = 0;
        }
    }

    if (Game.Input.isKeyDown('w')) {
        this.velocity.j -= speed;
    }
    else if (Game.Input.isKeyDown('s')) {
        this.velocity.j += speed;
    }
    else {
        if (Math.abs(this.velocity.j) > 3) {
            this.velocity.j += (this.velocity.j > 0) ? -speed : speed;
        }
        else {
            this.velocity.j = 0;
        }
    }

    this.updateVectors(dt);
}

আমি 3 ব্যবহার করেছি কারণ নিম্নের যে কোনও কিছুই অদ্ভুত আচরণ প্রদর্শন করে, আমি অনুমান করছি যে আমি যদি গতি বাড়িয়ে তুলি তবে এটির পরিবর্তন হওয়া দরকার।


2
এছাড়াও সামান্য শব্দার্থিক বিস্তারিত .. বিবৃতিতে আপনার ত্বরণ, অর্থাত্ হার বেগ দ্বারা পরিবর্তন আসলে। :)velocity.i += speed;speed
Ipsquiggle

ফ্লিক্সেল এইটিকে "টেনে আনুন" বলে, যদি আপনি কোনও শব্দটির সন্ধান করেন যা ত্বরণের চেয়ে পৃথক।
গ্রেগরি অ্যাভেরি-ওয়েয়ার

"অধঃপতন" হল নেতিবাচক ত্বরণ। ক্যালকুলাস নিয়েছেন?
3Dave

1
আসলে "অধঃপতন" একটি আসল জিনিস নয় বা "নেতিবাচক ত্বরণ "ও নয়। এটি সমস্ত নিয়মিত ত্বরণ, ঠিক বিভিন্ন দিকে।
মাইকেলহাউস

উত্তর:


16

কিছু হিসাবে সহজ

this.velocity.i *= 0.9;

ভাল কাজ করে।


হেহ, এটা ওভার ফাঁদে ফেলা ট্রাস্ট আমাকে যে খারাপ। আমি সম্প্রতি পড়েছি যে আপনি 0.9 দ্বারা গুণ করে মৌলিক বায়ু প্রতিরোধের অনুকরণ করতে পারেন এবং এখনও তা মনে আসে না। ধন্যবাদ.
জাভুরা

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

7

সিউডোকোডে, আমি এর বিভিন্নতা করি:

গতি + = ((মুভি ডাইরেকশন * সর্বাধিক স্পিড) - গতি) * এক্সিলারেশনফ্যাক্টর

কোথায়:

  • সত্তা বর্তমান অক্ষের উপরে ভ্রমণ করে এমন বর্তমান গতি।
  • সরানো দিকনির্দেশ হ'ল সত্তা যে অক্ষটি বর্তমান অক্ষটিতে ভ্রমণ করার চেষ্টা করছে, 1 এগিয়ে আছে, 0 এখনও আছে এবং -1 পিছনের দিকে রয়েছে। এর মধ্যে সমস্ত মান অনুমোদিত are
  • ম্যাক্সিমামস্পিড একটি ধ্রুবক নির্ধারণ যা সত্তাটি বর্তমান অক্ষে ভ্রমণ করতে পারে fas
  • এক্সিলারেশনফ্যাক্টর 0 এবং 1 এর মধ্যে একটি ধ্রুবক যা ত্বরণ এবং হ্রাসের হারকে উপস্থাপন করে। 1 তাত্ক্ষণিক, এবং 0 কখনও চলবে না।

যা ত্বরণ এবং বিস্ময় উভয়ই রেখার পরিবর্তে একটি বাঁকানোতে সুন্দরভাবে পরিচালনা করে । আপনি যদি আলাদা ত্বরণ এবং হ্রাসের হার চান তবে আপনি যদি এমন বিবৃতি দিতে পারেন যা প্লেয়ারটি বিপরীত দিকে নাড়াতে বা সরিয়ে না নেওয়ার চেষ্টা করছে কিনা তা নির্ধারণ করে।


1
এটি একটি খুব আকর্ষণীয় সূত্র। আমি ভবিষ্যতের জন্য এটি মাথায় রাখতে হবে!
Ipsquiggle

+1 আকর্ষণীয় দেখায়, আমি মনে করি এটি কাজ করে দেখতে কিছু কোডের মধ্যে ফেলে দিতে পারে।
ডেভিড ইয়ং

খুব ভাল সূত্র। আমি এটি ব্যবহার করতে যাচ্ছি। আপনি এটা কোথা থেকে পেলেন? নাকি আপনি নিজেই এটিকে আবিষ্কার করেছেন?
রিকি

প্রতিক্রিয়া জানাতে দেরি করার জন্য দুঃখিত, আমি অস্পষ্টভাবে মনে করি ব্লিটজ 3 ডি ডেমোগুলির একটির কোড থেকে অনুপ্রাণিত হয়েছি, তবে কোনটি আমি মনে করতে পারি না।
earok

3

এখানে উত্তরগুলি ( vel = vel * 0.9) আসলে স্যাঁতসেঁতে হয় , আমি কী 'ক্ষয়' বলে বিবেচনা করব তা নয় ।

আমি প্রায়শই এইভাবে হতাশাবোধ করি:

if ( Game.Input.isKeyDown( "w" ) )
{
    this.velocity.i = Math.max( -WALKSPEED, this.velocity.i - WALKFORCE);
}
else if ( Game.Input.isKeyDown( "d" ) )
{
    this.velocity.i = Math.min( WALKSPEED, this.velocity.i + WALKFORCE);
}
else
{
    if (this.velocity.i < 0)
    {
        this.velocity.i = Math.min( 0, this.velocity.i + WALKFORCE);
    }
    else if (this.velocity.i > 0)
    {
        this.velocity.i = Math.max( 0, this.velocity.i - WALKFORCE);
    }
}

কিছু ভাল এবং কনস বনাম স্যাঁতসেঁতে:

পেশাদাররা :

  • গতি বাড়ানোর ত্বরণ এবং ধীর গতি ত্বক উভয়ই লিনিয়ার, যা একটি মনোরম সূক্ষ্ম 'গেম অনুভূতি' দেয় যা আমার মনে হয় স্যাঁতসেঁতে সরবরাহ করে না। এটি গুরুত্বপূর্ণ অংশ।
  • পূর্বাভাসযোগ্য সংখ্যার পুনরাবৃত্তির পরে চরিত্রটি অনুমানযোগ্য সম্পূর্ণ স্টপটিতে আসে।

কনস :

  • আপনি অ-অরথোগোনাল গতি (যা আপনার মতো মনে হচ্ছে?) ব্যবহার করছেন তবে এটি বাস্তবায়ন করার জন্য এটি জটিল is (আপনি যদি কোডটি দিয়ে ব্যাখ্যা করেছেন এমনটি চান তবে কেবল জিজ্ঞাসা করুন))

1

খুব সহজভাবে, সিউডো কোডে:

if(no movement keys pressed) [Meaning we want to start to decelerate]
current speed *= 0.85 [Or some number between 0 and 1, the smaller the faster the deceleration]

তবে, আপনার (বর্তমান গতি <0.001f) বা কিছু পরীক্ষা করে 0 এ সেট করা দরকার check


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