একটি স্প্রাইটের একটি পেছনের, ভুতুড়ে প্রভাব তৈরি করুন


15

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

ভূতের ট্রেইল

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

সুতরাং এই প্রভাব অর্জন করার জন্য অন্য কোন উপায় আছে? সম্ভবত কিছু শেডার ভুডু যাদু দ্বারা? আমি যদি ইউনিটি এবং 2 ডি টুলকিট ব্যবহার করি তবে এটি যদি সহায়তা করে।

উত্তর:


21

আপনি সহজেই এটি একটি কণা সিস্টেম এবং একটি শেডার দিয়ে করতে পারেন। প্রতিটি এক্স মিলিসেকেন্ডে সর্বোচ্চ 3 টি কণা সহ 1 টি কণা ছাড়ার জন্য কণা সিস্টেমটি সেট আপ করুন। (আপনি পেছনের স্প্রিটগুলি কতটা পৃথক হতে চান তার উপর ভিত্তি করে একটি এক্স চয়ন করুন)) কণার জন্য, চরিত্রের বর্তমান স্প্রাইট হিসাবে একই চিত্রটি ব্যবহার করুন তবে আলাদা উপাদান দিয়ে with পেছনের কণায় আপনি যে প্রভাবটি চান তা পেতে উপাদানটিতে আলফা মিশ্রিত কয়েকটি শেডার চেষ্টা করুন।

যদি আপনি ফ্যানসিয়ার পেতে চান তবে আপনি চরিত্রের বর্তমান গতির উপর ভিত্তি করে সর্বাধিক # কণা এবং অন্যান্য সেটিংস সামঞ্জস্য করতে পারেন।

এখানে একটি উদাহরণ রয়েছে যা আমি মাত্র 1 কোয়াড, 1 স্প্রাইট, 2 উপকরণ এবং একটি কণা সিস্টেম দিয়ে করতে পেরেছি।

আমি কণা সিস্টেমকে কোয়াডের সাথে সংযুক্ত করেছি এবং সোনিক স্প্রাইট ব্যবহারের জন্য কোয়াড সেট করেছি। আমি কেবলমাত্র এমশন, কালার ওভার লাইফ টাইম এবং পার্টিকাল সিস্টেমের রেন্ডারারের সেটিংস ব্যবহার করছি।

সর্বাধিক কণা: 5

সিমুলেশন স্পেস: ওয়ার্ল্ড

লাইফটাইম শুরু করুন: 1

গতি শুরু করুন: 0

সারা জীবন জুড়ে রঙ: সাদা (আলফা 255) থেকে কালো (আলফা 0) থেকে বিবর্ণ

রেন্ডারারের উপাদান: মূল হিসাবে একই চিত্র ব্যবহার করে তবে "কণা / আলফা মিশ্রিত" শেডার দিয়ে।

ট্রেলিং পার্টিকেল এফেক্ট সহ সোনিক


1
এটি পুরোপুরি কাজ করে। আমার কেবলমাত্র কাজটি করা দরকার তা হল বর্তমান স্প্রাইট চিত্রের সাথে কীভাবে কণা সিস্টেমের রেন্ডারারের উপকরণটি প্রোগ্রামেমেটিকভাবে সেট করা যায় (আবার, আমি 2D টুলকিট ব্যবহার করছি যাতে এটি ইউনিটির স্প্রাইট সিস্টেম থেকে আলাদা)।
কুপার

4

কণা সিস্টেম সমাধানের মতো, আপনি একই প্রভাব তৈরি করতে 2 ডি টোকলকিট ব্যবহার করতে পারেন। 3 বাচ্চাদের গেম অবজেক্টটি কেবলমাত্র একটি স্প্রিটের সাথে যুক্ত হয়ে অক্ষরটিতে যুক্ত করুন। প্রয়োজন অনুযায়ী আলফা এবং রঙিন পরিবর্তন করুন। তারপরে আপনি চরিত্রের গতির উপর নির্ভর করে স্প্রাইটের স্থানীয় অবস্থানগুলি পরিবর্তন করতে পারেন:

myTransform.localPosition = characterSpeed * distanceFactor;

এটি একটি অঙ্কন কলকে সংরক্ষণ করে (কণার তুলনায়) এবং যদি আপনি এটি মসৃণ করতে বা স্তব্ধ করতে চান তবে আপনাকে প্রভাবের প্রসারণের উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।


এটি আসলে আমাকে আরও ভাল সমাধানের দিকে নিয়ে যায় যা 2 ডি টুলকিট ব্যবহার করার সময় আরও উপযুক্ত suited তবে আমি স্বীকৃত উত্তর হিসাবে চিহ্নিত করতে নারাজ। কণার সিস্টেম পদ্ধতিটি অনেক বেশি "ইউনিটি জেনেরিক" উপায় যা সম্ভবত বেশিরভাগ ityক্য বিকাশকারীদের জন্য সবচেয়ে উপযুক্ত। আমি সমাধানটি শেষ করে পোস্টটি ব্যবহার করব।
কুপার

3

LVBen দ্বারা সরবরাহিত কণা সিস্টেম সমাধানটি কাজ করে, আপনার স্প্রাইটের জন্য 2D টুলকিট ব্যবহার করার সময় এটি সেরা উপযুক্ত সমাধান নয়। প্রাথমিক কারণটি হ'ল মূল প্রিফাবের বর্তমান স্প্রিট অ্যানিমেশনটিতে কণা সিস্টেমের প্রেতাত্মা ট্রেইল উপাদান সিঙ্ক করা অসম্ভব।

এখানে আমি ব্যবহার করে শেষ করেছি এমন 2 ডি টুলকিট বন্ধুত্বপূর্ণ সমাধান।

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

শীর্ষ প্যারেন্ট আপডেটে

// AmountToMove is a Vector3 of the amount we will translate this gameobject.
float y = (int)AmountToMove.y == 0 ? 0 : -AmountToMove.y;
float distanceFactor = 0.05f;
for (int i = 0; i < GhostingRoot.childCount; ++i) {
    // Based on the player's current speed and movement along the x and y axes,
    // position the ghost sprites to trail behind.
    Vector3 ghostSpriteLocalPos = Vector3.Lerp(
                                      GhostingRoot.GetChild(i).localPosition,
                                      new Vector3((-CurrentSpeed * distanceFactor * i),
                                                  (y * distanceFactor * i), 0),
                                      10f * Time.deltaTime);
    // GhostingRoot is the root gameobject that's parent to the ghost sprites.
    GhostingRoot.GetChild(i).localPosition = ghostSpriteLocalPos;
    // Sync the animations.
    // _ghostSprites is a List of the tk2dSpriteAnimator ghost sprites.
    _ghostSprites[i].Play(SpriteAnimator.CurrentClip.name);
    _ghostSprites[i].Sprite.FlipX = Sprite.FlipX;
}

এই দ্রবণটি মুখ্য স্প্রিটের সাথে ভূত স্প্রিটের অ্যানিমেশনগুলিকে সিঙ্ক করার সময় পেছনের ঘোস্টিং প্রভাব তৈরি করবে create

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