Unity3D তে কিভাবে একটি পদার্থবিদ্যা-ভিত্তিক অক্ষর নিয়ন্ত্রক কোড করবেন

Unity3D তে কিভাবে একটি পদার্থবিদ্যা-ভিত্তিক অক্ষর নিয়ন্ত্রক কোড করবেন
আপনার মত পাঠকরা MUO সমর্থন করতে সাহায্য করে। আপনি যখন আমাদের সাইটে লিঙ্ক ব্যবহার করে একটি ক্রয় করেন, আমরা একটি অনুমোদিত কমিশন উপার্জন করতে পারি। আরও পড়ুন

একটি অক্ষর নিয়ন্ত্রক আপনাকে আপনার গেমে সহজ আন্দোলনের পদার্থবিদ্যা প্রয়োগ করতে সাহায্য করতে পারে।





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





ধাপ 1: প্লেয়ার এবং টেরেইন অবজেক্টের সাথে একটি দৃশ্য তৈরি করুন

  ঐক্য অক্ষর নিয়ন্ত্রক 3d স্থান

একবার ইউনিটি খোলা হয়ে গেলে, এবং আপনি একটি নতুন প্রকল্প তৈরি করেছেন, আপনি আপনার দৃশ্যে কয়েকটি বস্তু যোগ করে শুরু করতে পারেন। আপনি আপনার পছন্দ অনুযায়ী এই বস্তুগুলি তৈরি করতে পারেন, তবে আপনি সঠিক সেটিংস ব্যবহার করছেন তা নিশ্চিত করতে সতর্ক থাকুন। যদিও এই প্রকল্পটি মৌলিক, এটি একটি দুর্দান্ত উপায় ঐক্যের সাথে শুরু করুন .





ভূখণ্ডের জন্য একটি 3D প্লেন অবজেক্ট

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

একটি কিউব অবজেক্ট প্লেয়ার মডেল

এর পরে, প্লেয়ার মডেল হিসাবে কাজ করার জন্য দৃশ্যটিতে একটি ঘনক যোগ করার সময় এসেছে। হায়ারার্কি ফলকের ভিতরে ডান-ক্লিক করুন, ওভার করুন 3D অবজেক্ট , এবং নির্বাচন করুন কিউব ড্রপ-ডাউন মেনু থেকে। নতুন কিউবটি এমনভাবে রাখুন যাতে এটি আপনার যোগ করা সমতলের উপরে থাকে। কিউবটিকে একটি পদার্থবিজ্ঞানের বস্তুতে পরিণত করতে আপনাকে একটি কঠোর বডি উপাদান যোগ করতে হবে।



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

তুমি খুজেঁ পাবে বিনামূল্যে ইউনিটি সম্পদ অনলাইন আপনার প্রকল্পের স্প্রুস আপ.





আমার হার্ড ড্রাইভ 100 এ চলছে কেন?

একটি থার্ড-পারসন ক্যামেরা

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

একটি দ্রুত পরীক্ষা

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





ধাপ 2: একটি C# ফাইল সেট আপ করুন

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

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

 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

public class Character_Control: MonoBehaviour {
    void Start() {
    }

    void Update() {
    }
}

ধাপ 3: বেগ সহ ফরওয়ার্ড এবং ব্যাকওয়ার্ড মোশন তৈরি করতে C# ব্যবহার করুন

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

 public Rigidbody rigidbody; 
public float speed;

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

 void Start() { 
    rigidbody = GetComponent < Rigidbody > ();
}

এখন আপনি কিছু কোড যোগ করতে পারেন যা আপনার প্লেয়ারের মডেলকে সচল করবে। এই কোড সুন্দর এবং সহজ; আপনার শুধু প্রয়োজন দুটি যদি বিবৃতি, একটি এগিয়ে চলার জন্য এবং একটি পিছিয়ে যাওয়ার জন্য। কখন কোন কী চাপা হচ্ছে তা নির্ধারণ করতে আপনি Input.GetKey ব্যবহার করতে পারেন। এই ক্ষেত্রে, আপনি W এবং S কীগুলির প্রেস খুঁজছেন।

এই কীগুলির যেকোনো একটি চাপলে rigidbody.AddForce ব্যবহার করে কিউব রিজিডবডিতে একটি বল যোগ হয়। আপনি গতি পরিবর্তনশীল দ্বারা এটির Z-অক্ষ অবস্থান (transform.forward) গুণ করে যোগ করা বলের দিক এবং গতি গণনা করতে পারেন। পশ্চাদগামী গতির জন্য আপনার ব্যবহার করার জন্য কোন transform.backward শ্রেণী নেই, কিন্তু transform.forward -1 দ্বারা গুণ করে এটি অর্জন করা যায়।

 if (Input.GetKey("w")) { 
    rigidbody.AddForce(transform.forward * speed);
}

if (Input.GetKey("s")) {
    rigidbody.AddForce((transform.forward * -1) * speed);
}

C# ফাইলটি সংরক্ষণ করুন এবং ইউনিটিতে ফিরে যান। প্রজেক্ট ফলকের ভিতরে স্ক্রিপ্টটি খুঁজুন এবং সেই বস্তুতে স্ক্রিপ্ট বরাদ্দ করতে অনুক্রমের অভ্যন্তরে অক্ষর মডেল কিউবের উপর টেনে আনুন। আপনি যখন কিউব নির্বাচন করেন তখন আপনাকে ইন্সপেক্টর প্যানে একটি উপাদান হিসাবে স্ক্রিপ্টটি দেখতে হবে। রিজিডবডি ভেরিয়েবল বক্সের ভিতরে ক্লিক করুন এবং আপনার কিউবের রিজিডবডি নির্বাচন করুন।

আপনি এখন গেমটি চালু করতে এবং আপনার কোড পরীক্ষা করতে প্লে বোতামটি ব্যবহার করতে পারেন। কিন্তু অপেক্ষা করো! একটি সমস্যা আছে; আপনার কিউব সোজা এগিয়ে যাওয়ার পরিবর্তে রোল হতে চলেছে। কিউবের পরিদর্শকের কাছে ফিরে যান, রিজিডবডি উপাদানটি খুঁজুন এবং গেমটি আবার চালু করার আগে X এবং Z অক্ষের উপর ফ্রিজ রোটেশনের জন্য বাক্সগুলিতে টিক দিন। এখন এটা কাজ করা উচিত.

ধাপ 4: টর্ক সহ বাম এবং ডান দিকে বাঁক তৈরি করতে C# ব্যবহার করুন

পিছনে এবং এগিয়ে যাওয়ার বিপরীতে, আপনার কিউব প্লেয়ার মডেলটিকে ঘুরিয়ে দেওয়ার জন্য টর্ক নামক শক্তির প্রয়োজন হয়। এর জন্য আপনার আরেকটি পরিবর্তনশীল প্রয়োজন: একটি টর্ক মান নির্ধারণের জন্য একটি পাবলিক ফ্লোট।

 public float torque;

এই স্ক্রিপ্টে বাম এবং ডানে ঘোরার কোডটি সামনে এবং পিছনে যাওয়ার জন্য ব্যবহৃত কোডের মতোই। একটি আছে যদি D কী (ডান বাঁক) বা A কী (বাম দিকের বাঁক) প্রেস করার জন্য যে প্রতিটি দিকের জন্য বিবৃতি দেখায়।

প্রতিটি if স্টেটমেন্টের প্রথম ধাপটি হল Input.GetAxis পদ্ধতি ব্যবহার করে মোড়ের দিক নির্ণয় করা এবং একটি ফ্লোট ভেরিয়েবলে ফলাফল নির্ধারণ করা। এটি অনুসরণ করে, ঘনকের টর্ক, টার্ন এবং Z অক্ষকে গুণ করে ঘনক অক্ষর মডেলে ঘূর্ণন বল প্রয়োগ করতে rigidbody.AddTorque ব্যবহার করুন।

 if (Input.GetKey("d")) { 
    float turn = Input.GetAxis("Horizontal");
    rigidbody.AddTorque(transform.up * torque * turn);
}

if (Input.GetKey("a")) {
    float turn = Input.GetAxis("Horizontal");
    rigidbody.AddTorque(transform.up * torque * turn);
}

আপনার কোড সংরক্ষণ করুন এবং এটি পরীক্ষা করতে ইউনিটিতে ফিরে যান। আপনি কিউব নির্বাচন করে এবং আপনার স্ক্রিপ্টে রিজিডবডির ভর, ড্র্যাগ এবং টর্ক ভেরিয়েবল সম্পাদনা করে আপনার প্লেয়ার মডেল ঘূর্ণনের গতি এবং র‌্যাম্প-আপ সময় সামঞ্জস্য করতে পারেন। এই উদাহরণ প্রকল্পটি 1 ভর, 1 টানা এবং 2 টর্কের উপর স্থির হয়।

ধাপ 5: প্রোগ্রাম জাম্পিং করতে C# ব্যবহার করুন

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

 private bool isJumping = false;

এই ভেরিয়েবলটি পরীক্ষা করার জন্য একটি বিবৃতি ছাড়া কিছুই করবে না। এই ক্ষেত্রে, ভেরিয়েবল মিথ্যা কিনা তা পরীক্ষা করার জন্য একটি মৌলিক if স্টেটমেন্ট কৌশলটি করবে। অন্য আন্দোলনে একই শর্ত যোগ করা যদি বিবৃতি জাম্পের সময় খেলোয়াড়কে নড়াচড়া করা থেকে বিরত করে।

 if (!isJumping) { 
}

অন্য আন্দোলনে একই শর্ত যোগ করা যদি বিবৃতি জাম্পের সময় খেলোয়াড়কে নড়াচড়া করা থেকে বিরত করে।

 if (Input.GetKey("w") && !isJumping) { 
    rigidbody.AddForce(transform.forward * speed);
}

!isJumping if স্টেটমেন্টের মধ্যে, আপনার আরেকটি if স্টেটমেন্ট প্রয়োজন, এইবার জাম্প বোতামের একটি কীপ্রেস চেক করার জন্য। isJumping ভেরিয়েবলকে সত্যে সেট করা হল এই if স্টেটমেন্টে প্রথম কাজ, তারপরে ঘনক্ষেত্রে বর্তমানে প্রয়োগ করা শক্তিগুলিকে সরিয়ে দেওয়ার জন্য একটি rigidbody.angularVelocity ঘোষণা করে।

এখন আপনি rigidbody.AddForce ঘোষণা ব্যবহার করতে পারেন তার Z অক্ষের ঘনক্ষেত্রে বল যোগ করতে, একটি লাফের ঊর্ধ্বগামী গতি তৈরি করে। অবশেষে, 0.8 সেকেন্ড পরে একটি ভিন্ন ফাংশন কল করার জন্য একটি আহ্বান ঘোষণা ব্যবহার করার সময়।

 if (!isJumping) { 
    if (Input.GetKeyDown("space")) {
        isJumping = true;
        rigidbody.AddForce(transform.up * speed * 120);
        rigidbody.angularVelocity = Vector3.zero;
        Invoke("Move_Setter", 0.8 f);
    }
}

এই ফাংশনটি isJumping ভেরিয়েবলটিকে আবার মিথ্যাতে সেট করে যাতে আন্দোলন/জাম্পিং আবার সম্ভব হয় এবং 0.8 সেকেন্ড বিলম্ব এটিকে খুব তাড়াতাড়ি ট্রিগার করা থেকে বিরত করে।

 void Move_Setter() { 
    isJumping = false;
}

ধাপ 6: আপনার ক্যারেক্টার কন্ট্রোলার কোড পরীক্ষা করুন

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

ঐক্য চরিত্র নিয়ন্ত্রক তৈরি করা

ইউনিটিতে একটি অক্ষর নিয়ন্ত্রক তৈরি করার সময় আপনি বিভিন্ন পদ্ধতির বিভিন্ন থেকে বেছে নিতে পারেন। পদার্থবিদ্যা ব্যবহার করা একটি বিকল্প, তবে আপনি চাইলে বিল্ট-ইন ক্যারেক্টার কন্ট্রোলার সিস্টেমও ব্যবহার করতে পারেন।

এই ধরনের বিভিন্ন বিকল্পগুলি অন্বেষণ করা ইউনিটির মতো সরঞ্জামগুলি সম্পর্কে শেখার একটি দুর্দান্ত উপায়।