დასაწყისში, დაამატეთ ახალი სკრიპტი თქვენს პერსონაჟს. დაასახელეთ PlayerMovement Script. ჯერ ჩვენ გვჭირდება მითითება მოთამაშეთა მოძრაობის სკრიპტიდან პერსონაჟების კონტროლერზე. სცენარს ეუბნებიან პერსონაჟის გადატანა.
დასაწყისში ჩვენ ვქმნით ცვლადს:
საჯარო CharacterController2D კონტროლერი;
შემდეგ თქვენ გაქვთ შესაძლებლობა გადაათრიოთ პერსონაჟის კონტროლერი თავისუფალ სივრცეში.
მოძრაობის მიმართულება და სიჩქარე უნდა იყოს განსაზღვრული მოძრაობისათვის. ამისათვის თქვენ გჭირდებათ მოთამაშის შეყვანა:
ისრის მარცხენა ღილაკი ან A = 1
ისრის მარჯვენა ღილაკი ან D = -1
იგივე ეხება კონტროლერს.
horizontalMove = Input.GetAxisRaw ("ჰორიზონტალური");
განახლების არე ორგანიზებას უწევს მოთამაშის შეყვანას.
FixedUpdate გამოიყენება ფიზიკისთვის. ეს ფუნქცია აუცილებელია.
შექმენით სხვა ცვლადი:
float horizontalMove = 0f;
FixedUpdate გადააქვს პერსონაჟი.
void FixedUpdate()
{
კონტროლერი. გადაადგილება (ჰორიზონტალური გადატანა, ყალბი, ყალბი);
}
პირველი ყალბი ნიშნავს იმას, რომ მოთამაშე არ უნდა დაიხუროს, ხოლო მეორე - რომ არ უნდა ხტომა.
გადაადგილების განმარტება საჭიროა Player Controller Script– ში:
საზოგადოებრივი სიცარიელის გადატანა (მოძრავი მოძრაობა, ბოულის კრაუჩი, ბულის ნახტომი)
{}
როგორც შემდეგი ცვლადი გჭირდებათ:
საჯარო float runSpeed = 40f;
მოთამაშის შეყვანა მრავლდება გაშვებული სიჩქარით:
horizontalMove = Input.GetAxisRaw ("ჰორიზონტალური") * runSpeed;
თუ მოთამაშე მოძრაობს მარცხნივ და მარჯვნივ, ნაბიჯი იქნება -40 და 40.
მოძრაობა ასევე მრავლდება Time.fixedDeltaTime.
Time.fixedDeltaTime არის დრო მას შემდეგ, რაც დარეკეს ბოლო FixedUpdate ფუნქცია. ეს განმარტავს, რომ მოძრაობა ხდება იმავე ოდენობით, მიუხედავად იმისა, თუ რამდენად ხშირად ეწოდება ფუნქცია. ამრიგად, პერსონაჟის სიჩქარე იგივეა, არ აქვს მნიშვნელობა რა სისტემები ან პლატფორმებია ის.
თუ სალომბარდე დაეცემა, მას შეუძლია ოდნავ გადაიტანოს მიწაში.
სწორედ ამიტომ Rigidbody2D– ში შეჯახების გამოვლენა დისკრეტულიდან უწყვეტამდე გადადის.
ხტუნვისთვის შემოწმებულია ჩვენ დააჭირეთ ღილაკს თუ არა:
if (input.GetButtonDown ("გადახტომა"))
{
ნახტომი = ჭეშმარიტი;
}
ეს ასევე უნდა გაკეთდეს FixedUpdate ფუნქციაში. ინფორმაცია გადაეცემა ბულის ცვლადს:
bool jump = ყალბი;
ნახტომის ცვლადი ასევე ემატება FixedUpdate– ს ქვეშ.
როდესაც ხტომის ღილაკს დააჭერთ, PlayerMovement სკრიპტი უგზავნის კონტროლერს, რომლის გადახტომაც გვინდა. ამის შემდეგ ისევ იქნება
ნახტომი = ყალბი;
ეს უნდა განისაზღვროს, რადგან ჩვენ არ გვინდა სამუდამოდ წინსვლა.
კიდევ ერთი პრობლემა ის არის, რომ როდესაც პერსონაჟი ცდილობს გადახტომა პლატფორმაზე, ის იქ იჭედება. ხასიათი შემდეგ უნდა გადმოვარდეს და დაეცემა ამაზე. ამისათვის საჭიროა ფიზიკის მასალა. პროექტის ფარგლებში, დააწკაპუნეთ მარჯვენა ღილაკით შექმნა–> PhysicsMaterial2D
დაასახელეთ მოლიპულ. დააყენეთ ხახუნის და სისუსტის 0. XNUMX. აიღეთ PhysicsMaterial და გადაიტანეთ იგი მოთამაშის BoxCollider– ის მასალაზე.
თუ თქვენ განსაზღვრეთ რამდენიმე კოლაიდერი გმირისთვის, შეგიძლიათ ფიზიკის მასალა სხვა კოლაიდერებს მიანიჭოთ.
კლავიატურის განლაგება განისაზღვრება Unity InputManager- ის საშუალებით. ამის ნახვა შეგიძლიათ პროექტის პარამეტრებში.
დააწკაპუნეთ მარჯვენა ღილაკით გადასვლის ღილაკზე და აირჩიეთ დუბლიკატი მასივის ელემენტი. დაარქვით მას "კრაუჩი".
თუ მოთამაშეებს სურთ ისრის ღილაკებით თამაში, უბრალოდ განსაზღვრეთ ალტერნატიული ღილაკი.
გაიმეორეთ ნაბიჯები ხტომიდან კრაკამდე:
როდესაც იხსნება ღილაკი კრახი, პერსონაჟმა ასევე უნდა შეწყვიტოს ჩახუტება. ასე რომ, ეს არ მუშაობს ისე, როგორც ხტომა. თუ მოთამაშეებს სურთ ისრის ღილაკებით თამაში, უბრალოდ განსაზღვრეთ ალტერნატიული ღილაკი.
დაამატეთ შემდეგი განახლების ფუნქციაში:
else if (Input.GetButtonUp ("კრაუჩი"))
{
კრაუჩი = ყალბი;
}
იმისათვის, რომ შესაბამისი სექციები გამოჩნდეს სიმბოლოების კონტროლერში, თქვენ უნდა გადართოთ ისინი პირადიდან საჯაროზე:
გაიყვანე ეს კოლაიდერირომელიც უნდა გამორთოთ შესაბამის ველში. თუ თქვენს ზემოთ არის "ჭერი", თქვენი პერსონაჟი შენელდება, როდესაც დააჭირეთ კრაუჩის ღილაკს.