Kā kodēt uz fiziku balstītu rakstzīmju kontrolleri programmā Unity3D

Kā kodēt uz fiziku balstītu rakstzīmju kontrolleri programmā Unity3D
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Rakstzīmju kontrolleris var palīdzēt ieviest vienkāršu kustību fiziku jūsu spēlē.





Unity3D rakstzīmju kontrolleriem varat pieiet no vairākiem leņķiem. Ja izmantojat bibliotēku ar jaudīgām klasēm un funkcijām, uz fiziku balstīta rakstzīmju kontrollera izveide var būt jautra vieta spēles izstrādes sākšanai.





1. darbība. Izveidojiet ainu ar atskaņotāju un reljefa objektiem

  vienotības rakstzīmju kontrolieris 3D telpa

Kad Unity ir atvērts un esat izveidojis jaunu projektu, varat sākt, pievienojot savai ainai pāris objektus. Varat izveidot šos objektus jebkurā sev tīkamā secībā, taču esiet uzmanīgi un pārliecinieties, vai izmantojat pareizos iestatījumus. Lai gan šis projekts ir vienkāršs, tas ir lielisks veids, kā sāc ar Vienotību .





3D plaknes objekts reljefam

Pirmais objekts, ko pievienot savai ainai, ir lidmašīna. Ar peles labo pogu noklikšķiniet hierarhijas rūtī, virziet kursoru virs 3D objekts un atlasiet Lidmašīna no saraksta. Varat pielāgot lidmašīnas izmēru, lai nodrošinātu lielāku pārbaudes laukumu, taču jums nav jādara nekas cits.

Kuba objektu atskaņotāja modelis

Pēc tam ir pienācis laiks ainai pievienot kubu, lai tas darbotos kā spēlētāja modelis. Ar peles labo pogu noklikšķiniet hierarhijas rūtī, virziet kursoru virs 3D objekts un atlasiet Kubs no nolaižamās izvēlnes. Novietojiet jauno kubu tā, lai tas atrastos virs plaknes, kuru arī esat pievienojis. Jums arī jāpievieno cietā korpusa sastāvdaļa, lai kubs kļūtu par fizikas objektu.



Izvēlieties kubu un dodieties uz inspektoru. Klikšķiniet uz Pievienot komponentu rūts apakšā meklējiet stingru korpusu un atlasiet Stingrs korpuss no saraksta, kad tas parādās. Atzīmējiet Izmantojiet gravitāciju atzīmējiet izvēles rūtiņu un atstājiet pārējos iestatījumus tādus, kādi tie ir.

kā iegūt fotoattēlus no iPhone uz Mac

Tu vari atrast bezmaksas Unity aktīvi tiešsaistē lai uzlabotu savu projektu.





Trešās personas kamera

Jūsu ainai jau ir jābūt kamerai, kuru varat izmantot kā trešās personas kameru. Novietojiet kameru tā, lai tā atrastos ērtā trešās personas pozīcijā virs sava kuba. Pirms kameras vilkšanas un nomešanas uz kuba atveriet hierarhijas rūti, lai izveidotu vecāku un bērnu attiecības. Kad tas būs izdarīts, kamera automātiski sekos jūsu kubam.

Ātrā pārbaude

Kamēr jūsu ainai vēl nav koda, varat pārbaudīt līdz šim paveikto darbu. Noklikšķiniet uz Spēlēt pogu ekrāna augšdaļā, lai ielādētu spēli. Jums vajadzētu redzēt, kā kubs nokrīt un nolaižas lidmašīnas augšpusē, un kamerai jāseko kubam, kad tas krīt.





2. darbība: iestatiet C# failu

Tagad ir pienācis laiks izveidot C# failu, lai jūs varētu sākt programmēt kādu kustību. Dodieties uz sadaļu Projekts, ar peles labo pogu noklikšķiniet, virziet kursoru virs Izveidot un sarakstā atlasiet Mape. Nosauciet mapi Skripti vai kaut ko līdzīgu.

Pārvietojieties jaunajā mapē un atkārtojiet procesu, bet sarakstā atlasiet C# Script. Varat piešķirt šim failam jebkuru nosaukumu, taču tas būs arī galvenās funkcijas nosaukums tajā. Pārliecinieties, vai jūsu jaunais C# izskatās šādi.

kā pārbaudīt, vai manā iPhone nav vīrusu
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;

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

    void Update() {
    }
}

3. darbība: izmantojiet C#, lai izveidotu kustību uz priekšu un atpakaļ ar ātrumu

Pirms funkciju pievienošanas skripta failā deklarējiet dažus publiskos mainīgos. Vispirms ir stingrs korpuss, lai saglabātu atskaņotāja modeli. Arī deklarējiet pludiņu, lai sekotu kustības ātrumam. Šie mainīgie atrodas galvenajā klasē, ārpus jebkādām funkcijām.

 public Rigidbody rigidbody; 
public float speed;

Pēc tam ir pienācis laiks funkcijai Sākt pievienot vienu koda rindiņu. Tas izmanto GetComponent deklarāciju, lai piešķirtu kuba cietā korpusa komponentu jūsu izveidotajam cietā korpusa mainīgajam.

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

Tagad varat pievienot kodu, kas iedarbinās jūsu atskaņotāja modeli. Šis kods ir jauks un vienkāršs; jums vienkārši nepieciešami divi ja paziņojumi, viens kustībai uz priekšu un otrs, lai pārvietotos atpakaļ. Varat izmantot Input.GetKey, lai noteiktu, kad taustiņš tiek nospiests. Šajā gadījumā jūs meklējat taustiņu W un S nospiešanu.

Nospiežot kādu no šiem taustiņiem, tiek pievienots spēks kuba cietajam korpusam, izmantojot rigidbody.AddForce. Varat aprēķināt pievienotā spēka virzienu un ātrumu, reizinot tā Z-ass pozīciju (transform.forward) ar ātruma mainīgo. Nav klases transform.backward, ko varat izmantot kustībai atpakaļ, taču to var panākt, reizinot transform.forward ar -1.

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

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

Saglabājiet C# failu un dodieties atpakaļ uz Unity. Atrodiet skriptu projekta rūtī un velciet un nometiet to uz rakstzīmju modeļa Cube hierarhijā, lai piešķirtu skriptu šim objektam. Atlasot kubu, skriptam vajadzētu redzēt kā komponentu rūtī Inspektors. Noklikšķiniet cietā korpusa mainīgā lodziņā un atlasiet sava kuba cieto korpusu.

Tagad varat izmantot pogu Spēlēt, lai palaistu spēli un pārbaudītu savu kodu. Bet pagaidi! Ir problēma; jūsu kubs gatavojas ripot, nevis virzīties taisni uz priekšu. Atgriezieties pie kuba inspektora, atrodiet komponentu Rigidbody un atzīmējiet izvēles rūtiņas Freeze Rotation uz X un Z ass, pirms atkal sākat spēli. Tagad tam vajadzētu darboties.

4. darbība: izmantojiet C#, lai izveidotu pagriezienu pa kreisi un pa labi ar griezes momentu

Atšķirībā no pārvietošanās atpakaļ un uz priekšu, Cube atskaņotāja modeļa pagriešanai ir nepieciešams spēks, ko sauc par griezes momentu. Šim nolūkam ir nepieciešams cits mainīgais: publisks pludiņš, lai piešķirtu griezes momenta vērtību.

 public float torque;

Kods, lai pagrieztos pa kreisi un pa labi šajā skriptā, ir ļoti līdzīgs tam, ko izmanto, lai pārvietotos arī uz priekšu un atpakaļ. Ir an ja paziņojums katram virzienam, kas meklē vai nu taustiņu D (pagrieziens pa labi) vai taustiņu A (pagrieziens pa kreisi) nospiešanu.

Pirmais solis katrā if paziņojumā ir noteikt pagrieziena virzienu, izmantojot metodi Input.GetAxis, un piešķirt rezultātu peldošajam mainīgajam. Pēc tam izmantojiet rigidbody.AddTorque, lai pieliktu kuba rakstzīmju modelim rotācijas spēku, reizinot kuba griezes momentu, pagriezienu un Z asi.

 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);
}

Saglabājiet savu kodu un dodieties atpakaļ uz Unity, lai to pārbaudītu. Varat pielāgot atskaņotāja modeļa rotācijas ātrumu un paaugstinājuma laiku, atlasot kubu un skriptā rediģējot cietā korpusa masas, vilkšanas un griezes momenta mainīgos. Šajā projekta paraugā ir iestatīta 1 masa, 1 pretestība un 2 griezes moments.

5. darbība: izmantojiet C#, lai ieprogrammētu lēkšanu

Kā šī Unity rakstzīmju kontrollera pēdējais elements ir pienācis laiks izveidot savu lēcienu. Lēciena izveide ir sarežģītāka nekā citas pamata vadīklas, pie kurām esat strādājis, jo lēcienam ir jābūt ierobežotam augstumam. Sāciet, pievienojot privātu Būla mainīgo, lai izsekotu, vai spēlētājs lec.

 private bool isJumping = false;

Šis mainīgais neko nedarīs bez paziņojuma, lai to pārbaudītu. Šajā gadījumā galvenais if paziņojums, lai pārbaudītu, vai mainīgais ir nepatiess, palīdzēs. Tāda paša nosacījuma pievienošana citai kustībai, ja paziņojumi neļaus spēlētājam kustēties lēcienu laikā.

 if (!isJumping) { 
}

Tāda paša nosacījuma pievienošana citai kustībai, ja paziņojumi neļaus spēlētājam kustēties lēcienu laikā.

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

Paziņojumā !isJumping if ir nepieciešams vēl viens if priekšraksts, šoreiz, lai pārbaudītu, vai nav nospiests lēciena taustiņš. Mainīgā isJumping iestatīšana uz True ir pirmā lieta, kas jādara šajā if paziņojumā, kam seko rigidbody.angularVelocity deklarācija, lai noņemtu kubam pašlaik pieliktos spēkus.

Tagad varat izmantot deklarāciju rigidbody.AddForce, lai pievienotu spēku kubam uz tā Z ass, radot lēciena kustību uz augšu. Visbeidzot, ir pienācis laiks izmantot izsaukuma deklarāciju, lai pēc 0,8 sekundēm izsauktu citu funkciju.

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

Šī funkcija iestata mainīgo isJumping atpakaļ uz false, lai kustība/lēkšana atkal būtu iespējama, un 0,8 sekunžu aizkave neļauj tam aktivizēties pārāk ātri.

kā mainīt reģionu Android ierīcēs
 void Move_Setter() { 
    isJumping = false;
}

6. darbība: pārbaudiet savu rakstzīmju kontrollera kodu

Saglabājiet failu un dodieties atpakaļ uz Unity, lai pārbaudītu uzrakstīto kodu. Tāpat kā vairums kompilatoru, Unity sniedz informāciju par kļūdām un citām problēmām, kas saistītas ar jūsu kodu, lai būtu vieglāk redzēt, kas jums varētu būt jāmaina. Pilnu šī projekta kodu varat apskatīt mūsu vietnē GitHub lappuse.

Vienotības rakstzīmju kontrolieru izveide

Veidojot rakstzīmju kontrolieri Unity, varat izvēlēties no dažādām pieejām. Fizikas izmantošana ir viena no iespējām, taču, ja vēlaties, varat izmantot arī iebūvēto rakstzīmju kontrollera sistēmu.

Dažādu iespēju izpēte, piemēram, šī ir lielisks veids, kā uzzināt par tādiem rīkiem kā Unity.