প্রোগ্রামিং এ গেম উইথ ইউনিটি: এ বিগিনার্স গাইড

প্রোগ্রামিং এ গেম উইথ ইউনিটি: এ বিগিনার্স গাইড
এই গাইডটি বিনামূল্যে পিডিএফ হিসাবে ডাউনলোড করার জন্য উপলব্ধ। এখনই এই ফাইলটি ডাউনলোড করুন । আপনার বন্ধুদের এবং পরিবারের সাথে এটি অনুলিপি করুন এবং ভাগ করুন।

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





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





ইন্ডি গেম ডেভেলপমেন্টের দ্রুত বিকশিত ল্যান্ডস্কেপে, Unক্য এটি একটি ডি-ফ্যাক্টো স্ট্যান্ডার্ড হিসাবে আবির্ভূত হয়েছে: এর স্বল্প ব্যয়, ব্যবহারের সহজতা এবং বিস্তৃত বৈশিষ্ট্য সেট এটি দ্রুত গেম ডেভেলপমেন্টের জন্য আদর্শ করে তোলে। Ityক্য এত নমনীয়, যে আপনি এমনকি করতে পারেন আপনার নিজস্ব কাস্টম গেম কন্ট্রোলার তৈরি করুন DIY একটি বিট সঙ্গে কিভাবে জানি!





এমনকি বড় স্টুডিও যেমন সিসিপি (ডেভেলপারস অফ ইভ অনলাইন ) এটি দ্রুত প্রোটোটাইপিং গেম কনসেপ্টের জন্য ব্যবহার করুন। ইউনিটি একটি 'বাক্সে গেম ইঞ্জিন' প্রদান করে - একটি পদার্থবিজ্ঞান এবং রেন্ডারিং ইঞ্জিন যা হুক সহ বেশ কয়েকটি স্ক্রিপ্টিং ভাষার জন্য, ভিডিওগেমের কার্যত যে কোনও ধারাতে অভিযোজিত।

যদিও ইউনিটি গেমের পরিবেশকে কাজে লাগানোর জন্য একটি ভিজ্যুয়াল এডিটর প্রদান করে, ইউনিটি একটি 'জিরো প্রোগ্রামিং' গেম ক্রিয়েটর টুল নয়। এটি আপনাকে ফলাফল তৈরির জন্য প্রোগ্রাম করতে হবে, কিন্তু আপনাকে 'গেম মেকার' প্রোগ্রামের চেয়ে অনেক বেশি নমনীয় এবং শক্তিশালী টুল দেয়।



Ityক্য আপনার জন্য কাজ করবে না, কিন্তু এটি উল্লেখযোগ্যভাবে প্রবেশের বাধা কমায়। সি ++ এবং ওপেনজিএল দিয়ে পুরোপুরি শুরু থেকে শুরু করে, এমন কিছু জায়গায় যেতে দিন লাগতে পারে যেখানে প্রকৃতপক্ষে অনস্ক্রিনে কিছু রেন্ডার করা আছে। ইউনিটি ব্যবহার করে, এটি প্রায় দশ সেকেন্ড সময় নেয়। ইউনিটি গেম তৈরির মৌলিক উপাদানগুলিকে দ্রুত, স্বজ্ঞাত উপায়ে নবীন প্রোগ্রামারদের হাতে তুলে দেয়।

আজ আমি আপনাকে everythingক্যে একটি গেম তৈরির জন্য যা জানা দরকার তা দিয়ে আপনাকে নির্দেশনা দেব, যা দশটি প্রধান অধ্যায়ে বিভক্ত:





§1 Un ইউনিটির সংস্করণ

§2 Un ইউনিটি ইনস্টল করা





§3 the বস্তু-ভিত্তিক দৃষ্টান্তের সংক্ষিপ্ত ভূমিকা

§4 – ইউনিটি বুনিয়াদি

§5 – উদাহরণ: একটি গেমের মৌলিক উপাদান

§6 Un ইউনিটিতে স্ক্রিপ্টিং

-7 – উদাহরণ: স্ক্রিপ্টিং পং

-8 the ডকুমেন্টেশন অন্বেষণ / আরো শেখার

§9 – আপনার খেলা নির্মাণ / একটি স্বতন্ত্র অ্যাপ্লিকেশন কম্পাইলিং

§10-বন্ধ নোট

1. ইউনিটির সংস্করণ

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

এটি বলেছিল, বেশিরভাগ অপেক্ষাকৃত সহজ গেমগুলির জন্য আপনি তৈরি করতে চাইতে পারেন, ইউনিটির বিনামূল্যে সংস্করণটি পুরোপুরি পর্যাপ্ত। আমরা আগ্রহীদের জন্য আরও বিস্তারিতভাবে নীচের মূল পার্থক্যগুলি ভেঙে ফেলব।

1.1 মূল্য

ইউনিটির ফ্রি ভার্সন অবশ্যই ফ্রি। যাইহোক, কিছু সীমাবদ্ধতা আছে: ইউনিটির ফ্রি সংস্করণ কোন কোম্পানির লাইসেন্স করা যাবে না যার বার্ষিক আয় বেশি $ 100,000 । যদিও এই ধরনের সংস্থাগুলি এই গাইডের আওতার বাইরে, যদি আপনি সন্দেহ করেন যে আপনি এই ধরনের একটি সংগঠন হতে পারেন, তবে সম্ভবত প্রো সংস্করণটি চালু করা বুদ্ধিমানের কাজ।

ইউনিটির প্রো ভার্সন হল $ 75 এক মাস, অথবা $ 1500 একটি স্থায়ী লাইসেন্সের জন্য, এবং এটি দিয়ে তৈরি গেমগুলির সাথে আপনি কি করতে পারেন তার কোন সীমা নেই। এখানে 30 দিনের ফ্রি ট্রায়ালও রয়েছে, যা আমরা এই গাইডের জন্য ব্যবহার করব, যাতে আপনাকে যতটা সম্ভব উপলব্ধ বৈশিষ্ট্যগুলির সম্পূর্ণ ওভারভিউ দেওয়া যায়। এর মাধ্যমে এক বছরের ছাত্র লাইসেন্সও পাওয়া যায় অধ্যয়ন জন্য $ 129

1.2 বৈশিষ্ট্য

Featuresক্যের মুক্ত সংস্করণে অনেক বৈশিষ্ট্য অনুপস্থিত। যাইহোক, সবচেয়ে গুরুত্বপূর্ণ পার্থক্যগুলি নিম্নরূপ: ইউনিটির ফ্রি সংস্করণটিতে বেশ কয়েকটি রেন্ডারিং বিকল্পের অভাব রয়েছে যা আরও সুন্দর, দ্রুত চলমান গেমগুলির জন্য অনুমতি দেয় (এলওডি সমর্থন, স্ক্রিন-স্পেস পোস্ট-প্রসেসিং, উন্নত শেডার, রিয়েল-টাইম সফট ছায়া, এবং স্থগিত রেন্ডারিং)। এতে পূর্ণাঙ্গতারও অভাব রয়েছে যান্ত্রিক অ্যানিমেশন সিস্টেম , এবং কিছু এআই সরঞ্জাম।

সাধারণভাবে, জটিল, বৃহৎ আকারের প্রকল্প বা প্রকল্প যেখানে গ্রাফিক্যাল পারফরম্যান্স গুরুত্বপূর্ণ, প্রো সংস্করণটি সার্থক। আমি প্রো সংস্করণটি ব্যবহার করি, কারণ আমি ওকুলাস রিফ্টের জন্য ভার্চুয়াল রিয়েলিটি গেম ডেভেলপ করি এবং হেডসেটের সাথে সঠিকভাবে ইন্টারঅ্যাক্ট করার জন্য স্ক্রিন-স্পেস পোস্ট-প্রসেসিং সাপোর্ট প্রয়োজন।

2. ইউনিটি ইনস্টল করা

Ityক্য ইনস্টল করার জন্য সোজা। আপনি এখান থেকে এক্সিকিউটেবল ডাউনলোড করতে পারেন 3ক্য 3d.com/get-unity/download

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

অভিনন্দন! আপনার এখন ইউনিটি প্রো এর 30 দিনের ট্রায়াল আছে। ট্রায়ালের মেয়াদ শেষ হয়ে গেলে, যদি আপনি প্রো সংস্করণটি কিনতে না চান, তাহলে আপনি বিনামূল্যে সংস্করণে যেতে পারেন এবং আপনার বিদ্যমান সামগ্রী রাখতে পারেন।

আমার ফোনে bixby কি

3. বস্তু-ভিত্তিক দৃষ্টান্তের সংক্ষিপ্ত ভূমিকা

ইউনিটি দিয়ে শুরু করার আগে, এটি গুরুত্বপূর্ণ যে আমরা মূল বিষয়গুলির উপর একটু এগিয়ে যাই। Ityক্য উভয়কে সমর্থন করে সি # এবং জাভাস্ক্রিপ্ট জন্য গেম প্রোগ্রামিং ; আমরা এই টিউটোরিয়ালের জন্য C# এর সাথে কাজ করব।

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

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

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

এখানে বোঝার সবচেয়ে গুরুত্বপূর্ণ ধারণা হল বস্তু ভিত্তিক দৃষ্টান্ত (সংক্ষেপে খোলা )। অবজেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজে প্রোগ্রামগুলিকে ফাংশনাল ইউনিট বলা হয় বস্তু । প্রতিটি বস্তুর নিজস্ব ব্যক্তিগত ভেরিয়েবল এবং ফাংশন রয়েছে। অবজেক্ট-নির্দিষ্ট ফাংশন বলা হয় পদ্ধতি

এখানে ধারণাটি মডুলারিটি: প্রতিটি বস্তুকে বিচ্ছিন্ন করে এবং অন্যান্য বস্তুকে তার পদ্ধতির মাধ্যমে তার সাথে যোগাযোগ করতে বাধ্য করে, আপনি সম্ভাব্য অনিচ্ছাকৃত মিথস্ক্রিয়াগুলির সংখ্যা হ্রাস করতে পারেন - এবং, এক্সটেনশন দ্বারা, বাগগুলি। আপনি এমন কোন বস্তু তৈরি করতে পারেন যা আপনি কোন পরিবর্তন ছাড়াই পুনরায় ব্যবহার করতে পারেন। Ityক্যে, আপনি এই বস্তুগুলি তৈরি করবেন এবং তাদের সাথে সংযুক্ত করবেন খেলা সত্তা (যাদের আচরণ তারা শাসন করবে)।

অবজেক্টগুলি থেকে তাত্ক্ষণিকভাবে ক্লাস : একটি শ্রেণী কেবল একটি ফাইল যা আপনার বস্তুর সংজ্ঞা দেয়। সুতরাং, যদি আপনি চান a ঠাট্টা আপনার গেমের শত্রুর জন্য AI পরিচালনা করে এমন বস্তু, আপনি একটি 'মুক' ক্লাস লিখবেন, এবং তারপর সেই ফাইলটি প্রতিটি শত্রু সত্তার সাথে সংযুক্ত করুন। যখন আপনি আপনার খেলা চালাবেন, প্রতিটি শত্রু 'Mook' বস্তুর একটি অনুলিপি দিয়ে সজ্জিত হবে।

একটি বস্তুর সাথে একটি নতুন স্ক্রিপ্ট সংযুক্ত করা এইরকম দেখাচ্ছে:

প্রথম, বস্তু নির্বাচন করুন এবং যান ইন্সপেক্টর । ক্লিক করুন উপাদান যোগ করুন বোতাম।

যাও নতুন স্ক্রিপ্ট , আপনি চান নাম লিখুন, এবং ক্লিক করুন তৈরি করুন এবং যোগ করুন

এখন আপনার কাছে একটি নতুন স্ক্রিপ্ট রয়েছে যা আপনি এটিতে ডাবল ক্লিক করে সম্পাদনা করতে পারেন!

একটি ক্লাস ফাইল এইরকম কিছু দেখায়:

using UnityEngine;
public class Mook : MonoBehaviour {
private float health;
void Start () {
health = 100;
}
void Update(){
if (health > 0) {
/* Search for player
if you encounter the player on the road, kill him
if you get shot, remove a random amount of health */
}
}
}

আসুন এটি ভেঙে দেওয়া যাক:

  • ইউনিটি ইঞ্জিন ব্যবহার করা: এই লাইনটি C# কে বলে যে আমরা ইউনিটির লাইব্রেরি ব্যবহার করতে চাই, যা আমাদের ইউনিটি গেম ইঞ্জিনের সাথে সংযোগ স্থাপন করতে দেয়।
  • পাবলিক ক্লাস Mook: মনো আচরণ: এই লাইনটি ক্লাস এবং এর নাম ঘোষণা করে - ঠাট্টা
  • ব্যক্তিগত ভাসমান স্বাস্থ্য: এটি একটি প্রাইভেট ক্লাস ভেরিয়েবল ঘোষণা করে (যা শুধুমাত্র ক্লাসের ভিতর থেকে পরিবর্তন করা যায়)। পরিবর্তনশীল একটি মান দেওয়া হয় শুরু করুন
  • অকার্যকর শুরু (): এটি একটি পদ্ধতির নাম ঘোষণা করে শুরু করুন । স্টার্ট হল একটি বিশেষ পদ্ধতি যা শুধুমাত্র একবার চালানো হয়, যখন গেমটি প্রাথমিকভাবে চালু হয়।
  • অকার্যকর আপডেট (): আপডেট হল আরেকটি বিশেষ পদ্ধতি, যা প্রতিটি ফ্রেমে চলে। আপনার বেশিরভাগ গেম লজিক এখানে যাবে।
  • // যদি আপনি রাস্তায় খেলোয়াড়ের মুখোমুখি হন তবে তাকে হত্যা করুন: এই লাইনটি একটি মন্তব্য (ডাবল স্ল্যাশ দিয়ে শুরু হওয়া যে কোন লাইন C#দ্বারা উপেক্ষা করা হয়)। কোডগুলি বিশেষ বিটগুলি কী করে তা মনে করিয়ে দেওয়ার জন্য মন্তব্যগুলি ব্যবহার করা হয়। এই ক্ষেত্রে, এই মন্তব্যটি কোডের আরও জটিল ব্লকের জন্য দাঁড়ানোর জন্য ব্যবহার করা হচ্ছে যা আসলে মন্তব্যটি বর্ণনা করে।

সাথে শুরু করুন এবং হালনাগাদ , আপনি প্রায় যেকোনো নাম দিয়ে আপনার নিজের পদ্ধতি তাত্ক্ষণিক করতে পারেন। যাইহোক, আপনি যে পদ্ধতিগুলি তৈরি করেন তা চালানো হবে না যতক্ষণ না তাদের বলা হয়। আসুন একটি কল্পিত শ্রেণীর জন্য একটি পদ্ধতি ঘোষণা করি যাকে বলা হয় addTwoNumbers যে দুটি সংখ্যা একসাথে যোগ করে:

public float addTwoNumbers(float a, float b) {
return a+b;
}

এটি একটি সর্বজনীন (অন্যান্য বস্তুর অ্যাক্সেসযোগ্য) পদ্ধতি ঘোষণা করে যা একটি ফ্লোট ফেরত দেয়, যাকে বলা হয় addTwoNumbers , যা ইনপুট হিসাবে দুটি ভাসা লাগে (বলা হয় প্রতি এবং )। এটি তারপর তার আউটপুট হিসাবে দুটি মানের যোগফল প্রদান করে।

এই পদ্ধতিটি একই শ্রেণীর ভিতর থেকে কল করুন (বলুন, ভিতর থেকে হালনাগাদ ) এটা এমন দেখতে:

float result = addTwoNumbers(1, 2);

অন্য ক্লাস থেকে পদ্ধতি কল করা অনুরূপ:

addTwoNumbers instance;
float result = instance.addTwoNumbers(1, 2);

আবার, এটি কেবল আমাদের শ্রেণীর একটি উদাহরণ তৈরি করে, যথাযথ পদ্ধতি অ্যাক্সেস করে এবং আমরা যে সংখ্যাগুলি যোগ করতে চাই তা খাওয়াই, তারপর ফলাফল সঞ্চয় করে ফলাফল । সরল।

যদি আপনার স্ক্রিপ্টটি এমন একটি বস্তুর সাথে সংযুক্ত থাকে যার বিশেষ বৈশিষ্ট্য রয়েছে (যেমন একটি কণা নির্গতকারী) যা GameObject প্যারামিটারের স্বাভাবিক সেটের অধীনে অ্যাক্সেস করা যায় না, তাহলে আপনি এটি ব্যবহার করে একটি ভিন্ন ধরনের খেলা সত্তা হিসেবে বিবেচনা করতে পারেন GetComponent পদ্ধতি

এর জন্য সিনট্যাক্স এই মত দেখাচ্ছে:

GetComponent().Play();

যদি এর মধ্যে কোনটি আপনার কাছে অপরিচিত হয়, ফিরে যান এবং C# প্রাইমার দিয়ে যান। আমরা এগিয়ে যাওয়ার সময় এটি আপনাকে অনেক হতাশা বাঁচাবে।

4. ityক্যের বুনিয়াদি

এই বিভাগে, আমরা ইউনিটি ইঞ্জিনের মৌলিক মেকানিক্সের মাধ্যমে আমাদের কাজ করতে যাচ্ছি। ইউনিটির ওয়ার্কফ্লো এরকম কিছু যায়:

  1. গেমটিতে ভূমিকা রাখার জন্য একটি সত্তা তৈরি করুন (ফাঁকা গেম অবজেক্টস বিমূর্ত যৌক্তিক কাজের জন্য ব্যবহার করা যেতে পারে)।
  2. একটি ক্লাস ফাইল লিখুন বা খুঁজুন, এবং এটি একটি স্ক্রিপ্ট হিসাবে সত্তা যোগ করুন ( উপাদান যোগ করুন বোতাম পরিদর্শক দেখুন
  3. দৌড় > পরীক্ষা > ডিবাগ > পুনরাবৃত্তি যতক্ষণ না এটি কাজ করে এবং গেমের পরবর্তী উপাদানটিতে চলে যায়।

ইউনিটি বেশ কয়েকটি মৌলিক ভিউ ট্যাব নিয়ে আসে যা ব্যবহারকারীর স্বাদের জন্য বিভিন্ন উপায়ে তৈরি করা যায়। বড় পাঁচটি হল:

  1. খেলা: গেমটির একটি চলমান উদাহরণ প্রদর্শন করে যার সাথে আপনি ইন্টারঅ্যাক্ট এবং পরীক্ষা করতে পারেন।
  2. দৃশ্য: এর একটি স্ট্যাটিক, সম্পাদনাযোগ্য সংস্করণ প্রদান করে ক্রীড়া জগৎ
  3. পরিদর্শক: আপনাকে গেমের জগতে স্বতন্ত্র সত্তাগুলি তাদের মধ্যে নির্বাচন করে পরিবর্তন করতে দেয় সম্পাদক ট্যাব।
  4. প্রকল্প: আপনাকে প্রকল্পের ফাইলগুলির মাধ্যমে ব্রাউজ করতে এবং মডেল, উপকরণ এবং অন্যান্য সম্পদগুলিতে টেনে আনতে দেয় সম্পাদক গেম জগতে তাদের রাখার জন্য ট্যাব।
  5. শ্রেণিবিন্যাস: এই ট্যাবটি বিশ্বের সমস্ত বস্তু দেখায়, যা আপনাকে দৃশ্যের মধ্যে দূরবর্তী বস্তুগুলি এবং পিতামাতার সত্তাগুলি একে অপরের কাছে ক্লিক করে এবং টেনে নিয়ে যাওয়ার অনুমতি দেয়।

এই সমস্ত জিনিসগুলির অবস্থানের জন্য নীচের চিত্রটি দেখুন:

4.1 ityক্য সত্তা

4.1.1 মেশেস

জাল পথ 3D জ্যামিতি ityক্যে প্রতিনিধিত্ব করা হয়। আপনি Unক্যের অন্তর্নির্মিত ব্যবহার করতে পারেন আদিম বস্তু (কিউব, গোলক, সিলিন্ডার, ইত্যাদি), অথবা একটি মডেলিং প্যাকেজ থেকে আপনার নিজের 3D মডেল আমদানি করুন ব্লেন্ডার অথবা মায়া । ইউনিটি সহ বিভিন্ন ধরণের 3D ফরম্যাট সমর্থন করে .fbx , এবং .3ds

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

4.1.2 GUI উপাদান

Usingতিহ্যবাহী GUI স্প্রাইট এবং পাঠ্য ব্যবহার করে প্রদর্শিত হতে পারে GUI টেক্সট এবং GUI টেক্সচার এডিটরে গেমঅবজেক্টস। যাইহোক, UI উপাদানগুলি পরিচালনা করার জন্য আরও শক্তিশালী এবং বাস্তবসম্মত উপায় হল 3D টেক্সট এবং চতুর্ভুজ GameObjects (স্বচ্ছ টেক্সচার এবং একটি unlit স্বচ্ছ শেডার সহ) HUD উপাদানগুলিকে গেম জগতে সত্তা হিসাবে স্থাপন করতে।

মধ্যে অনুক্রম দেখুন, এই গেমপ্লে উপাদানগুলিকে বাচ্চাদের তৈরির জন্য মূল ক্যামেরায় টেনে আনা যেতে পারে, যাতে তারা ক্যামেরা দিয়ে চলাচল এবং ঘোরানো নিশ্চিত করে।

GUI উপাদান (টেক্সট এবং টেক্সচার) পরিদর্শক ট্যাবে প্রাসঙ্গিক ক্ষেত্রগুলি ব্যবহার করে তাদের আকার এবং স্কেল সমন্বয় করতে পারে।

4.1.3 উপকরণ

উপাদানগুলি টেক্সচার এবং শেডারের সংমিশ্রণ, এবং প্রকল্প ট্যাব থেকে সরাসরি গেম অবজেক্টে টেনে আনা যায়। ইউনিটি প্রো সহ প্রচুর সংখ্যক শেডার আসে এবং আপনি যে বস্তুর জন্য প্রয়োগ করা হয় তার জন্য পরিদর্শক ট্যাব ব্যবহার করে তাদের সাথে সংযুক্ত টেক্সচারটি সামঞ্জস্য করতে পারেন।

একটি টেক্সচার আমদানি করতে, এটিকে a তে রূপান্তর করুন .jpg , .png , অথবা .bmp , এবং এটিতে টেনে আনুন সম্পদ ইউনিটি প্রজেক্ট ডাইরেক্টরির অধীনে ফোল্ডার (যা প্রদর্শিত হয় আমার ডকুমেন্টস গতানুগতিক). কয়েক সেকেন্ড পরে, সম্পাদকের মধ্যে একটি লোডিং বার উপস্থিত হবে। যখন এটি শেষ হয়, আপনি ইমেজটিকে টেক্সচার হিসেবে খুঁজে পেতে সক্ষম হবেন প্রকল্প ট্যাব।

4.1.5 লাইট

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

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

মধ্যে নির্দেশিকা দৃশ্য দৃশ্য আপনি আলোকসজ্জার সর্বোচ্চ পরিসীমা দেখান। পছন্দসই প্রভাব অর্জনের জন্য উভয় সেটিংস দিয়ে খেলুন। আপনি আলোর রঙ, প্যাটার্নও সামঞ্জস্য করতে পারেন ( কুকি পৃষ্ঠে প্রদর্শিত আলোর দিকে ইঙ্গিত করা হয়, এবং সরাসরি আলোর দিকে তাকানোর সময় কী ধরনের অগ্নিকুণ্ড অনস্ক্রিনে প্রদর্শিত হয়। কুকি আরও বাস্তববাদী আলোর প্যাটার্ন জাল করতে, নাটকীয় মিথ্যা ছায়া তৈরি করতে এবং প্রজেক্টর অনুকরণ করতে ব্যবহার করা যেতে পারে।

তিনটি প্রধান ধরনের আলো স্পট , বিন্দু , এবং দিকনির্দেশক

স্পট লাইট 3D স্পেসে একটি অবস্থান আছে এবং ভেরিয়েবল এঙ্গেলের একটি শঙ্কুতে শুধুমাত্র একটি দিকের প্রজেক্ট লাইট আছে। এগুলি ফ্ল্যাশলাইট, সার্চলাইট এবং সাধারণভাবে, আপনাকে আলোর আরও সঠিক নিয়ন্ত্রণ দেয়। স্পট লাইট ছায়া ফেলতে পারে।

পয়েন্ট লাইট 3D স্পেসে একটি অবস্থান আছে, এবং সব দিক সমানভাবে আলো নিক্ষেপ। পয়েন্ট লাইট ছায়া ফেলে না।

নির্দেশমূলক আলো অবশেষে, সূর্যালোক অনুকরণ করতে ব্যবহৃত হয়: তারা একটি দিক থেকে আলোকে এমনভাবে প্রজেক্ট করে যেন অসীম দূর থেকে। দিকনির্দেশক আলো দৃশ্যের প্রতিটি বস্তুকে প্রভাবিত করে এবং ছায়া তৈরি করতে পারে।

4.1.6 কণা সিস্টেম

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

অনেকগুলি প্যারামিটার রয়েছে যা আপনি এই প্রভাবগুলি অর্জন করতে পারেন, এবং আপনি সেগুলির অধীনে একটি কণা সিস্টেম তৈরি করে সেগুলি অ্যাক্সেস করতে পারেন উপাদান সম্পাদক > কণা সিস্টেম নির্বাচন > পরিদর্শক ট্যাব খুলছে । আপনি প্রতিটি কণার আকার, গতি, দিক, ঘূর্ণন, রঙ এবং টেক্সচার পরিবর্তন করতে পারেন এবং সেই প্যারামিটারগুলির বেশিরভাগই সময়ের সাথে সাথে পরিবর্তন করতে পারেন।

অধীনে সংঘর্ষ বৈশিষ্ট্য, যদি আপনি এটি সক্ষম করেন এবং সিমুলেশন স্পেস সেট করেন পৃথিবী আপনি এমন কণা পাবেন যা পৃথিবীর বস্তুর সাথে সংঘর্ষ করবে, যা বৃষ্টি, চলমান জল এবং স্ফুলিঙ্গ সহ বেশ কয়েকটি বাস্তব কণার প্রভাবের জন্য ব্যবহার করা যেতে পারে।

5. উদাহরণ: একটি গেমের মৌলিক উপাদান

এই টিউটোরিয়ালের জন্য, আমরা একটি সহজ গেম তৈরি করতে যাচ্ছি পং - এমন কিছু যা আমরা আগে DIY তে বেশ কয়েকবার কভার করেছি:

  • আরডুইনো ক্লাসিক পং
  • আরডুইনো ওএলইডি পং

এই বিভাগে, আমরা মূল উপাদানগুলি সাজাতে যাব - স্ক্রিপ্টিং টিউটোরিয়াল পরে আসবে।

প্রথমে, আসুন পং গেমটিকে এর মৌলিক উপাদানগুলিতে বিভক্ত করি। প্রথমে আমাদের দুটি প্যাডেল এবং একটি বল দরকার। বলটি অফস্ক্রিনে উড়ে যায়, তাই আমরা এটি পুনরায় সেট করার জন্য একটি প্রক্রিয়া চাই। আমরা বর্তমান স্কোর প্রদর্শন করতে পাঠ্যও চাই, এবং, আপনাকে Unক্যের সমস্ত মূল উপাদানগুলি দেখানোর স্বার্থে, যখন আপনি বলটি আঘাত করবেন তখন আমরা একটি অভিনব কণা প্রভাব চাই। পুরো গেমটি নাটকীয়ভাবে জ্বলতে হবে।

যে একটি মধ্যে ভেঙ্গে বল বস্তু (একটি গোলক), ক spawner , সঙ্গে দুটি প্যাডেল প্রপস কণা নির্গতকারী সংযুক্ত একটি 3D-text সত্তা , এবং একটি স্পট লাইট । এই টিউটোরিয়ালের জন্য, আমরা ডিফল্ট ভৌত উপাদান ব্যবহার করব বাউন্স , সঙ্গে বাউন্স কম্বাইন সেট গুণ । দশটি স্ক্রিনশটে সেটআপটি কেমন দেখাচ্ছে তা এখানে:

প্রথমে একটি তৈরি করুন কিউব প্রোপ প্যাডেলের জন্য।

যথাযথভাবে স্কেল করুন, এটা নকল , এবং একটি রাখা গোলক বলের জন্য প্যাডেলের মধ্যে।

তারপর, একটি তৈরি করুন 3D টেক্সট অবজেক্ট এবং স্কেল এবং অবস্থান এটি সঠিকভাবে, পরিবর্তন করে অক্ষরের আকার একটি কম পিক্সেলেটেড ইমেজ পেতে বৈশিষ্ট্য।

পরবর্তী, দুটি তৈরি করুন কণা সিস্টেম , আপনি যে বৈশিষ্ট্যগুলি চান তা চয়ন করুন এবং সেগুলি প্যাডেলের সাথে সংযুক্ত করুন।

পরবর্তী, আপনি চাইবেন অবস্থান এবং ক্যামেরা ঘোরান যাতে এটি দৃশ্যটিকে সঠিকভাবে ফ্রেম করে। ক্যামেরা নির্বাচন করার সময়, আপনি নীচের ডানদিকে কোণায় ক্যামেরার দৃশ্যের একটি ছোট প্রিভিউ দেখতে পারেন।

আমরা শেষ করার আগে, বলটিকে খেলা এলাকা থেকে বাউন্স করা থেকে বিরত রাখতে, বাম্পার হওয়ার জন্য আমাদের দুটি অতিরিক্ত কিউব তৈরি করতে হবে। আমরা এগুলোকে চেক না করে অদৃশ্য করতে পারি জাল রেন্ডারার মধ্যে পরিদর্শক ট্যাব

আপনি যদি খেলতে যান, আপনি এখন আমাদের গেমের মৌলিক উপাদানগুলি দেখতে পাচ্ছেন। তারা এখনও কিছু করবে না, কিন্তু আমরা সেদিকে যাব!

এখন যেহেতু আমরা সেই সেটআপ পেয়েছি, আমরা একটি গেম তৈরির জন্য এই উপাদানগুলির স্ক্রিপ্টিংয়ে কী জড়িত তা নিয়ে কথা বলতে যাচ্ছি।

6. ইউনিটিতে স্ক্রিপ্টিং

একবার আপনি একটি বস্তুর সাথে একটি স্ক্রিপ্ট সংযুক্ত করা হলে, আপনি এটিতে ডাবল ক্লিক করে এটি সংশোধন করতে পারেন পরিদর্শক । এই খোলে মনো ডেভেলপ , ইউনিটির জন্য ডিফল্ট ডেভেলপমেন্ট এনভায়রনমেন্ট। মোটকথা, মনোডেলভেপ হল একটি টেক্সট এডিটর যা বিশেষভাবে প্রোগ্রামিংয়ের জন্য অপ্টিমাইজ করা বৈশিষ্ট্যসমূহ।

কীওয়ার্ড এবং মন্তব্যগুলি হাইলাইট করা হয়েছে নীল এবং সবুজ , এবং সংখ্যাসূচক মান এবং স্ট্রিং প্রদর্শিত হয় জাল । আপনি যদি ব্যবহার করেন গ্রহন অথবা অন্যান্য IDE এর, MonoDevelop খুব অনুরূপ। আপনি পারেন নির্মাণ সম্পাদকের ভিতর থেকে আপনার স্ক্রিপ্ট, সিনট্যাক্স ত্রুটিগুলি পরীক্ষা করার জন্য, যেমন:

সাধারণভাবে, আপনার স্ক্রিপ্টটি ityক্যের সাথে ইন্টারঅ্যাক্ট করার জন্য, আপনাকে এমন উপাদানগুলি উল্লেখ করতে হবে যা স্ক্রিপ্ট ধারণকারী বস্তুটি ধারণ করে (আপনি এই উপাদানগুলির একটি তালিকা দেখতে পারেন পরিদর্শক ট্যাব যখন প্রাসঙ্গিক বস্তু নির্বাচন করা হয়)। তারপরে আপনি পদ্ধতিগুলি কল করতে পারেন বা এই উপাদানগুলির প্রতিটিতে ভেরিয়েবল সেট করতে পারেন যা আপনি চান পরিবর্তনগুলি কার্যকর করতে।

যদি আপনি একটি বস্তুর স্ক্রিপ্ট চান যাতে একটি ভিন্ন বস্তুর বৈশিষ্ট্য প্রভাবিত হয়, তাহলে আপনি একটি খালি তৈরি করতে পারেন গেমঅবজেক্ট আপনার স্ক্রিপ্টে পরিবর্তনশীল, এবং ব্যবহার করুন পরিদর্শক দৃশ্যের অন্য বস্তুর জন্য এটি বরাদ্দ করা।

বস্তুর যে উপাদান থাকতে পারে তার একটি তালিকা নিম্নরূপ (উপরের উদাহরণে আমাদের প্যাডেলগুলির একটি থেকে পরিদর্শক দৃশ্য থেকে নেওয়া)

  1. রূপান্তর
  2. ঘন (জাল ফিল্টার)
  3. বক্স কলাইডার
  4. মেশ রেন্ডারার

বস্তুর এই প্রতিটি দিক স্ক্রিপ্টের মধ্যে থেকে প্রভাবিত হতে পারে। পরবর্তী, আমরা ঠিক কিভাবে তাকান হবে।

6.1 রূপান্তর

ইউনিটি -তে একটি গেমঅবজেক্টের জন্য ট্রান্সফর্ম ফাংশন সেই বস্তুর ভৌত পরামিতি নিয়ন্ত্রণ করে: এটি স্কেল , এর অবস্থান , এবং তার অভিযোজন । আপনি এইরকম একটি স্ক্রিপ্ট থেকে তাদের অ্যাক্সেস করতে পারেন:

transform.position = newPositionVector3;
transform.rotation = newRotationQuaternion;
transform.localScale = newScaleVector3;

উপরের উদাহরণগুলিতে, নামযুক্ত ভেরিয়েবলগুলি নামগুলিতে নির্দিষ্ট ধরণের। এখানে কয়েকটি মূল বিবরণ রয়েছে: অবস্থান এবং স্কেল, যেমনটি আপনি আশা করেন, সেভাবে সংরক্ষণ করা হয় ভেক্টর 3s । আপনি অ্যাক্সেস করতে পারেন এক্স , এবং , এবং সঙ্গে প্রতিটি উপাদান (উদাহরণস্বরূপ, transform.position.y আপনি শূন্য সমতল উপরে একটি বস্তুর দূরত্ব দেয়)।

যাইহোক, এড়াতে জিম্বাল লক , ঘূর্ণন হিসাবে পরিচালিত হয় চতুর্থাংশ (চার কম্পোনেন্ট ভেক্টর)। যেহেতু হাত-ম্যানিপুলেটিং চতুর্থাংশ অপ্রচলিত, আপনি ইউলেরিয়ান কোণ ব্যবহার করে ঘূর্ণনকে কাজে লাগাতে পারেন Quaternion.Euler এর মতো পদ্ধতি:

transform.rotation = Quaternion.Euler(pitch, yaw, roll);

আপনি যদি বস্তুগুলিকে এক স্থান থেকে অন্য স্থানে সরিয়ে নিতে চান, তাহলে আপনি স্লার্প quaternions এবং vector3s জন্য পদ্ধতি সহায়ক। Slerp তিনটি যুক্তি নেয় - বর্তমান অবস্থা, চূড়ান্ত অবস্থা, এবং পরিবর্তনের গতি, এবং নির্ধারিত গতিতে তাদের মধ্যে মসৃণভাবে প্রবাহিত হয়। সিনট্যাক্স এই মত দেখাচ্ছে:

transform.position = Vector3.Slerp(startPositionVector3, newDestinationVector3, 1);

6.2 রেন্ডারার

Ityক্যের রেন্ডারার ফাংশনগুলি আপনাকে পর্দায় যেভাবে উপস্থাপন করা হয় তা নিয়ন্ত্রণ করতে দেয়। আপনি টেক্সচার পুনরায় বরাদ্দ করতে পারেন, রঙ পরিবর্তন করতে পারেন এবং বস্তুর শেডার এবং দৃশ্যমানতা পরিবর্তন করতে পারেন। সিনট্যাক্স এই মত দেখাচ্ছে:

renderer.enabled = false;
renderer.material.color = new Color(0, 255, 0);
renderer.material.mainTexture = myTexture;
renderer.material.shader = newShader;

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

6.3 পদার্থবিজ্ঞান

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

সকল পদার্থবিজ্ঞানের উপকরণ প্রয়োজন সংঘর্ষকারী । যাইহোক, প্রকৃত সিমুলেশন নিজেই একটি দ্বারা পরিচালিত হয় অনমনীয় শরীর , যা যোগ করা যেতে পারে পরিদর্শক দেখুন Rigidbodies হতে পারে গতিবিদ্যা অথবা অকিনেম্যাটিক

কাইনেমেটিক ফিজিক্স প্রপস তাদের চারপাশে ননকিনেমেটিক ফিজিক্স প্রপসের সাথে সংঘর্ষ করে (কিন্তু প্রভাবিত হয়)। স্ট্যাটিক কিনেমেটিক প্রপস হল প্রবাদতুল্য অস্থাবর বস্তু, এবং চলমান কাইনেমেটিক বস্তুগুলি প্রবাদতুল্য অবিরাম শক্তি (রেকর্ডের জন্য, যখন তারা সংঘর্ষ করে, তারা কেবল একে অপরের মধ্য দিয়ে যায়)।

এর বাইরে, আপনি বস্তুর কৌণিক টান সামঞ্জস্য করতে পারেন (এটিকে কতটুকু শক্তি লাগে), তার ভর পরিবর্তন করতে পারেন, এটি মাধ্যাকর্ষণ দ্বারা প্রভাবিত কিনা তা নির্দেশ করতে পারেন এবং এটিতে বল প্রয়োগ করতে পারেন।

উদাহরণ:

rigidbody.angularDrag = 0.1f;
rigidbody.mass = 100;
rigidbody.isKinematic = false;
rigidbody.useGravity = true;
rigidbody.AddForce(transform.forward * 100);

এগুলি সবই বেশ স্ব-ব্যাখ্যামূলক। এখানে লক্ষ্য করার একমাত্র বিষয় হল এর ব্যবহার ফরওয়ার্ড । ভেক্টর 3 এর তিনটি উপাদান রয়েছে ( । এগিয়ে , .up , এবং ঠিক ) তাদের সাথে যুক্ত, যা অ্যাক্সেস করা যায় এবং তাদের সাথে ঘোরানো যায় ( এগিয়ে সম্পাদকের নীল তীরের দিকনির্দেশ)। দ্য ফরওয়ার্ড কীওয়ার্ড হল কেবলমাত্র বর্তমান বস্তুর মাত্রা 1 এর সাথে ফরওয়ার্ড ভেক্টর। আপনি রেফারেন্সও করতে পারেন রূপান্তর এবং রুপান্তর , এবং তাদের বিপরীত পেতে তাদের অস্বীকার করুন।

6.4 সংঘর্ষ

প্রায়শই, একটি গেম নির্মাণের সময়, আপনি একটি সংঘর্ষের ফলে আপনার কোডে কিছু পরিবর্তন-এর অবস্থা হতে পারে, কেবলমাত্র পদার্থবিজ্ঞান সিমুলেশনের বাইরে। এই জন্য, আপনি একটি প্রয়োজন হবে সংঘর্ষ সনাক্তকরণ পদ্ধতি

ইউনিটিতে সংঘর্ষ সনাক্ত করার জন্য একটি নির্দিষ্ট পরিমাণ প্রস্তুতি কাজ প্রয়োজন। প্রথমে, সংঘর্ষে অন্তত একটি বস্তুর প্রয়োজন হয় a অ-কাইনেমেটিক কঠোর শরীর এর সাথে সংযুক্ত। উভয় বস্তুর অবশ্যই সঠিক কোলাইডার থাকতে হবে, যা নন-ট্রিগার হতে পারে। উভয় বস্তুর মোট গতি যথেষ্ট কম হওয়া উচিত যে তারা আসলে একে অপরের মধ্য দিয়ে যাওয়ার পরিবর্তে প্রকৃতপক্ষে সংঘর্ষ করে।

যদি আপনি সমস্ত কিছু যত্ন নিয়ে থাকেন তবে আপনি যে বস্তুর সাথে সংঘর্ষ চেক করতে চান তার সাথে সংযুক্ত একটি স্ক্রিপ্টে একটি বিশেষ সংঘর্ষ সনাক্তকরণ পদ্ধতি স্থাপন করে সংঘর্ষের জন্য পরীক্ষা করতে পারেন। পদ্ধতিটি দেখতে এরকম হবে:

void OnCollisionEnter(Collision other) {
//do things here
}

এই পদ্ধতিটি প্রথম ফ্রেমের সময় স্বয়ংক্রিয়ভাবে চলবে যে অন্য বস্তু আপনার বস্তুকে স্পর্শ করে। সংঘর্ষ সত্তা অন্য আপনি আঘাত করা বস্তুর একটি রেফারেন্স। আপনি, উদাহরণস্বরূপ, এটি উল্লেখ করতে পারেন gameobject , অনমনীয় শরীর , এবং রূপান্তর বিভিন্ন উপায়ে এটি ব্যবহার করার বৈশিষ্ট্য। যখন OnCollisionEnter সম্ভবত সবচেয়ে সাধারণ ফাংশন যা আপনি ব্যবহার করবেন, আপনিও ব্যবহার করতে পারেন OnCollisionExit এবং OnCollisionStay (অন্যথায় অভিন্ন সিনট্যাক্স এবং ব্যবহারের সাথে), যা প্রথম ফ্রেমের সময় সক্রিয় হয় যা আপনি একটি বস্তুর সাথে সংঘর্ষ বন্ধ করেন এবং যথাক্রমে আপনি প্রতিটি বস্তুর সাথে সংঘর্ষ বন্ধ করেন।

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

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

এটি -Vector3.up (সোজা নিচে) বরাবর বর্তমান বস্তুর অবস্থান থেকে একটি রশ্মি নিক্ষেপ করে, এবং ভেরিয়েবলকে লিঙ্ক করে আঘাত প্রথম বস্তুর সাথে এটি সংঘর্ষ হয়। একবার আপনার রশ্মি কিছু আঘাত করলে, আপনি অ্যাক্সেস করতে পারেন hit.distance এটি কতটা দূরে তা নির্ধারণ করতে, অথবা hit.GameObject আপনি আঘাত বস্তু হেরফের করতে।

বন্দুকটি কিসের দিকে ইঙ্গিত করেছে তা নির্ধারণ করতে, অথবা ক্যামেরা তাদের দিকে তাকালে বস্তু নির্বাচন করতে, অথবা মুভমেন্ট মেকানিকের কিছু শৈলীর জন্য এই ধরনের রায়কাস্ট ব্যবহার করা যেতে পারে।

6.5 সময় সংশোধন

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

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

6.6 অডিও উৎস এবং শ্রোতা

এখন আমরা কীভাবে বস্তু তৈরি, রেন্ডার এবং নিয়ন্ত্রণ করতে পারি তা নিয়ে আলোচনা করেছি, আসুন কম্পিউটার গেমস যে অন্য অর্থে কাজ করতে পারে সে সম্পর্কে কথা বলি: যথা, শব্দ । Ityক্য দুই ধরনের শব্দ সমর্থন করে: 2 ডি এবং 3D শব্দ 3D শব্দের দূরত্বের উপর ভিত্তি করে তাদের ভলিউম পরিবর্তিত হয় এবং ক্যামেরার তুলনায় তারা বিকৃত হয়; 2D শব্দ না।

2D শব্দগুলি ভয়েস-ওভার এবং ব্যাকগ্রাউন্ড মিউজিকের জন্য উপযুক্ত এবং 3D ইভেন্টগুলি পৃথিবীর ইভেন্টগুলির দ্বারা সৃষ্ট শব্দগুলিতে প্রযোজ্য। একটি শব্দ 3D কি না তা পরিবর্তন করার জন্য, এটিতে নির্বাচন করুন প্রকল্প দেখুন, স্যুইচ করুন পরিদর্শক ড্রপডাউন মেনু থেকে উপযুক্ত বিকল্পটি দেখুন এবং নির্বাচন করুন, তারপর টিপুন পুনরায় আমদানি বোতাম।

প্রকৃতপক্ষে শব্দটি চালানোর জন্য, আপনাকে একটি সংযুক্ত করতে হবে অডিও মাধ্যম একটি প্রোপে (আপনি যে প্রপ থেকে শব্দটি উৎপত্তি করতে চান, একটি 3D শব্দের ক্ষেত্রে)। তারপর আপনি খুলতে হবে অডিওক্লিপ ক্ষেত্র এবং আপনার সাউন্ড ফাইল নির্বাচন করুন।

অ্যান্ড্রয়েডে গুগল অ্যাকাউন্ট কীভাবে বাইপাস করবেন

তুমি ব্যবহার করতে পার myAudioSource.Pause () এবং myAudioSource.Play () সেই সাউন্ড ফাইলগুলি নিয়ন্ত্রণ করতে। আপনি পতনশীল আচরণ, ভলিউম, এবং ডপলারের অধীনে শব্দের স্থানান্তর সামঞ্জস্য করতে পারেন পরিদর্শক অডিওসোর্সের জন্য ট্যাব।

6.7 ইনপুট

এমন একটি গেম যা ব্যবহারকারীর কাছ থেকে কোন ইনপুট নেয় না তা অনেকটা গেম নয়। বিভিন্ন ধরণের ইনপুট রয়েছে যা আপনি পড়তে পারেন এবং সেগুলির প্রায় সবই এর মাধ্যমে অ্যাক্সেসযোগ্য ইনপুট এবং চাবি কোড বস্তু কিছু নমুনা ইনপুট বিবৃতি (যার প্রতিটি ফ্রেমের মূল্যায়ন আছে) নীচে।

Vector3 mousePos = Input.mousePosition;
bool isLeftClicking = Input.GetMouseButton(0);
bool isPressingSpace = Input.GetKey(KeyCode.Space);

এই লাইনগুলির কাজগুলি বেশিরভাগই স্ব -ব্যাখ্যামূলক। এই তিন ধরনের ইনপুট রেফারেন্স ব্যবহার করে, আপনি বেশিরভাগ আধুনিক 3 ডি কম্পিউটার গেমের নিয়ন্ত্রণ পরিকল্পনা পুনর্গঠন করতে পারেন।

6.8 একটি স্ক্রিপ্ট ডিবাগ করা

ধরা যাক একটি স্ক্রিপ্ট কাজ করে না। ভালো ডাক্তার যেমন বলেছেন, আপনার সাথে ব্যাঙ্গআপ এবং হ্যাংআপ হতে পারে। যদি আপনার সি#এর সাথে সম্পূর্ণ সিনট্যাক্স ত্রুটি থাকে, আপনি যখন খেলা চালাবেন তখন গেমটি সাধারণত চালাতে অস্বীকার করবে এবং যদি আপনি নির্মাণ সম্পাদকের মধ্যে থেকে স্ক্রিপ্ট। নিচে দেখ:

এই বাগগুলি সাধারণত ঠিক করা সবচেয়ে কঠিন নয়। আরও সমস্যাযুক্ত হতে পারে সূক্ষ্ম শব্দার্থগত ত্রুটিগুলি, যেখানে আপনি সফলভাবে বৈধ সি# দিয়ে পূর্ণ একটি ফাইল লিখেছেন - যা আপনি ভেবেছিলেন তা নয়। যদি আপনার এই ত্রুটিগুলির মধ্যে একটি থাকে, এবং আপনার এটি সনাক্ত করতে সমস্যা হচ্ছে, তবে কিছু জিনিস আছে যা আপনি পরিস্থিতির উন্নতি করার চেষ্টা করতে পারেন।

প্রথমটি হল গেমটির এক্সিকিউশন থামানো, এবং কনসোল চেক করা। আপনি ক্লিক করে গেমটি বিরতি দিতে পারেন বিরতি সম্পাদকের উপরের মাঝের অংশে আইকন, এবং তারপর নির্বাচন করুন কনসোল এর নিচ থেকে জানলা মেনু (বা টিপে Ctrl > শিফট > )। এমনকি যদি কোনও ত্রুটি না থাকে, তবুও সতর্কতাগুলি কি ভুল হতে পারে সে সম্পর্কে কিছু সূত্র দিতে সাহায্য করতে পারে।

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

7. উদাহরণ: স্ক্রিপ্টিং পং

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

নীচে, আপনি ব্যাখ্যামূলক মন্তব্য সহ বলের স্ক্রিপ্টটি দেখতে পারেন। বলকে কিছু মৌলিক লক্ষ্য অর্জন করতে হবে: এটি একটি জটিল প্যাটার্নে লাফিয়ে উঠতে হবে, সর্বদা উভয় অক্ষের উপর চলাচল বজায় রাখতে হবে এবং এটি একটি চ্যালেঞ্জিং কিন্তু অসম্ভব গতিতে অনুভূমিক দিকে ত্বরান্বিত করা উচিত।

BallHandler.cs

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

PaddleHandler.cs

পরবর্তী, আমাদের শত্রু এআই দরকার: এমন কিছু যা শত্রুর প্যাডেলকে বলের দিকে একটি নির্দিষ্ট হারে ট্র্যাক করবে। এর জন্য, আমরা সর্বাধিক সরলতার জন্য Vector3.Slerp ব্যবহার করব। আমরা একই কণার আচরণও চাই যা আমরা আমাদের নিজস্ব প্যাডেলে দেখি।

EnemyAI.cs

অবশেষে, স্কোরবোর্ড আপডেট করার জন্য আমাদের একটি স্ক্রিপ্ট দরকার এবং বল যখন সীমার বাইরে চলে যায় তখন রিসেট করে।

ScoreboardUpdater.cs

সেই স্ক্রিপ্টগুলি সংযুক্ত এবং রেফারেন্সগুলি ভরাট করে, যখন আমরা আমাদের পং গেমটি চালাই, আমরা গেমপ্লে অনুভব করি!

আপনি পারেন আমার পং ডেমো ডাউনলোড করুন , যদি আপনি আমার কর্মে বর্ণিত সবকিছু দেখতে চান। এটি উইন্ডোজ, ম্যাক এবং লিনাক্স সিস্টেমে চলে।

8. ডকুমেন্টেশন অন্বেষণ / আরো শেখার

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

এখানে একটি গুরুত্বপূর্ণ সম্পদ হল ইউনিটি স্ক্রিপ্ট রেফারেন্স । স্ক্রিপ্ট রেফারেন্স একটি অনুসন্ধানযোগ্য ডাটাবেস, যা C# এবং জাভাস্ক্রিপ্ট উভয়ের জন্য উপলব্ধ, যার প্রতিটি ইউনিটি কমান্ড এবং বৈশিষ্ট্যগুলির একটি তালিকা রয়েছে, যার ফাংশনগুলির বিবরণ এবং বাক্য গঠনের সংক্ষিপ্ত উদাহরণ রয়েছে।

আপনি যদি ইউনিটিটির সম্পাদক এবং ইন্টারফেসের সাথে সমস্যায় পড়েন, অথবা পছন্দের বিষয় হিসাবে ভিডিও টিউটোরিয়ালের মত, উচ্চ মানের একটি দীর্ঘ তালিকা আছে ইউনিটি ভিডিও টিউটোরিয়াল উপলব্ধ আরো বিস্তৃত (কিন্তু কম বিস্তৃত) ইউনিটির জন্য টেক্সট টিউটোরিয়াল CatLikeCoding থেকেও পাওয়া যায়।

অবশেষে, যদি আপনার ডকুমেন্টেশন বা টিউটোরিয়ালের সুযোগের বাইরে প্রশ্ন থাকে, তাহলে আপনি এখানে নির্দিষ্ট প্রশ্ন করতে পারেন উত্তর ইউনিটি 3 ডি । মনে রাখবেন যে উত্তরগুলি স্বেচ্ছাসেবকদের দ্বারা প্রদান করা হয়, তাই তাদের সময়কে সম্মান করুন এবং প্রথমে আপনার প্রশ্নের উত্তর দেওয়া হয়নি তা নিশ্চিত করতে প্রথমে ডাটাবেস অনুসন্ধান করুন।

9. আপনার গেম নির্মাণ / একটি স্বতন্ত্র অ্যাপ্লিকেশন কম্পাইলিং

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

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

> । এটি একটি সহজ ডায়ালগ নিয়ে আসবে যা আপনাকে বিভিন্ন প্ল্যাটফর্মের জন্য আপনার গেম তৈরি করতে দেয়।

সেখান থেকে প্রক্রিয়াটি স্ব -ব্যাখ্যামূলক: আপনার বিকল্পগুলি নির্বাচন করুন এবং আঘাত করুন নির্মাণ ; গেমটি আপনাকে একটি ডিরেক্টরি ইনস্টল করার জন্য অনুরোধ করবে এবং সেখানে এক্সিকিউটেবল এবং ডেটা ডিরেক্টরি উভয়ই স্থাপন করবে। এই দুটি ফাইল একসাথে জিপ করা এবং বিতরণ করা যেতে পারে (শুধু নিশ্চিত করুন যে আপনি ইউনিটি ডেমোতে নির্মিত গেমের জন্য চার্জ করছেন না, কারণ এটি পরিষেবার শর্তাবলী লঙ্ঘন করে)।

10. বন্ধ নোট

যে কোনও গেম ডেভেলপমেন্ট টুলের মতো, ইউনিটির সাথে সাফল্যের চাবিকাঠি হল পুনরাবৃত্তিমূলক উন্নয়ন। আপনাকে পরিচালনাযোগ্য ইনক্রিমেন্ট তৈরি করতে হবে - উচ্চাভিলাষী হোন, সব উপায়ে, কিন্তু ছোট অংশে উচ্চাভিলাষী হোন, এবং সেই অংশগুলিকে এমনভাবে সাজান যে, আপনি যদি আপনার চূড়ান্ত উচ্চাকাঙ্ক্ষায় কম পড়েন, তবুও আপনি কমপক্ষে একটি সুসংগঠিত হয়ে উঠবেন পণ্য

প্রথমে সবচেয়ে গুরুত্বপূর্ণ উপাদানগুলি পান: আপনার মনে একটি ধারণা আছে নূন্যতম টেকসই পণ্য , সবচেয়ে সহজ, সবচেয়ে খালি হাড়ের জিনিস যা আপনি সম্ভবত তৈরি করতে পারেন এবং এখনও অনুভব করেন যে আপনি কিছু সার্থক অর্জন করেছেন। বৃহত্তর উচ্চাকাঙ্ক্ষায় যাওয়ার আগে সেই ন্যূনতম কার্যকর প্রকল্পে যান।

এই টিউটোরিয়ালটি আপনাকে একটি শক্তিশালী শুরুর জায়গা দেয়, তবে ইউনিটি শেখার সেরা উপায় হল একটি গেম তৈরি করা। একটি গেম তৈরি করা শুরু করুন, আপনার জ্ঞানের ফাঁকগুলি সেগুলি আসার সাথে সাথে পূরণ করুন এবং জ্ঞানের ক্রমশ প্রবাহ সেই জিনিসগুলি মুছে ফেলবে যা আপনি আশ্চর্যজনকভাবে দ্রুত জানেন না।

আপনি যদি এই সব পড়ে থাকেন এবং ইউনিটির সাথে প্রয়োজনীয় কোডিং দ্বারা কিছুটা অভিভূত হন তবে নিশ্চিত করুন যে আপনি কীভাবে চেক করবেন ইউনিটি লার্ন এর সাথে গেম ডেভেলপমেন্ট শিখুন এবং কোন প্রোগ্রামিং ছাড়াই কিভাবে ভিডিও গেম তৈরি করা যায় সে সম্পর্কে আমাদের গাইড পড়ুন।

Ityক্য একটি শক্তিশালী হাতিয়ার, এবং একটু অন্বেষণের মাধ্যমে, আপনি এটির সাথে আপনার প্রত্যাশার চেয়ে দ্রুত চিত্তাকর্ষক প্রকল্প তৈরি করতে পারেন। আপনি নীচের মন্তব্যগুলিতে কী তৈরি করেছেন তা আমাদের জানান - আমরা দেখতে চাই!

শেয়ার করুন শেয়ার করুন টুইট ইমেইল ইমেইল আসল নাকি নকল তা পরীক্ষা করার ays টি উপায়

যদি আপনি একটি ইমেইল পেয়ে থাকেন যা কিছুটা সন্দেহজনক মনে হয়, তবে এর সত্যতা যাচাই করা সর্বদা ভাল। একটি ইমেল আসল কিনা তা বলার জন্য এখানে তিনটি উপায় রয়েছে।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • প্রোগ্রামিং
  • লংফর্ম
  • লংফর্ম গাইড
লেখক সম্পর্কে আন্দ্রে ইনফান্ত(131 নিবন্ধ প্রকাশিত)

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

আন্দ্রে ইনফান্তের থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন