Nan kòmansman an, ajoute yon nouvo script karaktè ou. Nonmen li PlayerMovement Script. Premyèman nou bezwen yon referans soti nan Script Mouvman jwè a Kontwolè a karaktè. Se script la te di pou avanse pou pi karaktè la.
Nan kòmansman an nou kreye yon varyab:
kontwolè CharacterController2D piblik;
Lè sa a, ou gen opsyon pou trenen kontwolè a karaktè nan yon espas gratis.
Yo dwe defini direksyon ak vitès mouvman an pou mouvman an. Pou sa ou bezwen opinyon nan men jwè a:
Flèch gòch kle oswa A = 1
Dwa flèch kle oswa D = -1
Se menm bagay la tou ak kontwolè a.
horizontalMove = Input.GetAxisRaw ("Orizontal");
Zòn aktyalizasyon a òganize opinyon ki soti nan jwè a.
Se FixedUpdate itilize pou fizik. Fonksyon sa a obligatwa.
Kreye yon lòt varyab:
flote orizontalMove = 0f;
FixedUpdate deplase karaktè a.
anile FixedUpdate ()
{
kontwolè.Move (orizontalMove, fo, fo);
}
Premye fo kanpe pou ke jwè a pa ta dwe koupi ak dezyèm lan pou ke li pa ta dwe sote.
Yon definisyon pou Deplase obligatwa nan Script Kontwolè jwè a:
piblik anile Deplase (flote deplase, bool koupi, bool so)
{}
Kòm varyab kap vini an ou bezwen:
flote piblik runSpeed = 40f;
Se opinyon ki soti nan jwè a miltipliye pa vitès la kouri:
horizontalMove = Input.GetAxisRaw ("Orizontal") * runSpeed;
Si jwè a deplase agoch ak adwat, mouvman an pral -40 ak 40.
Mouvman an tou miltipliye pa Time.fixedDeltaTime.
Time.fixedDeltaTime se tan depi yo te rele dènye fonksyon FixedUpdate la. Sa a presize ke mouvman an pran plas pa menm kantite lajan an, pa gen pwoblèm konbyen fwa yo rele fonksyon an. Se konsa, vitès la nan karaktè a se menm bagay la, pa gen pwoblèm sa sistèm oswa tribin li ye.
Si pyon an tonbe, li ka chanje yon ti kras nan tè a.
Se poutèt sa nan Rigidbody2D deteksyon an kolizyon chanje soti nan disrè kontinyèl.
Pou sote, li tcheke si wi ou non nou peze kle a so oswa ou pa:
si (input.GetButtonDown ("Ale"))
{
so = vre;
}
Sa a ta dwe tou fè nan fonksyon an FixedUpdate. Enfòmasyon an transfere ak yon varyab Boolean:
bool so = fo;
Variable a so tou te ajoute anba FixedUpdate.
Lè se bouton an so bourade, script la PlayerMovement anvwa kontwolè a ke nou vle sote. Apre sa li pral ankò
so = fo;
Sa a bezwen defini kòm nou pa vle sote devan pou tout tan.
Yon lòt pwoblèm se ke lè pèsonaj la ap eseye sote sou yon platfòm, li vin kole la. Lè sa a, pèsonaj la ta dwe glise desann ak tonbe sou sa. Yon materyèl fizik obligatwa pou sa. Anba Pwojè, dwa klike sou Kreye -> PhysicsMaterial2D
Non li glise. Mete Friksyon ak Bounciness a 0. Pran PhysicsMaterial la ak trennen l 'sou materyèl la soti nan BoxCollider jwè a.
Si ou te defini plizyè kolizyon pou protagonist a, ou ka bay tou materyèl fizik lòt kolizè yo.
Layout klavye a defini via InityManager Inite a. Ou ka jwenn sa anba Anviwònman Pwojè yo.
Dwa klike sou bouton sote a epi chwazi Eleman Array kopi. Non li "Crouch".
Si jwè yo vle jwe ak kle flèch, tou senpleman defini yon bouton altènatif.
Repete etap sa yo soti nan sote akouche:
Lè yo lage bouton an koupi, pèsonaj la ta dwe sispann tou koupi. Se konsa, li pa travay byen tankou sote. Si jwè yo vle jwe ak kle flèch, tou senpleman defini yon bouton altènatif.
Ajoute sa ki annapre yo nan fonksyon aktyalizasyon a:
lòt bagay si (Input.GetButtonUp ("Crouch"))
{
koupi = fo;
}
Se konsa, seksyon ki koresponn yo parèt nan kontwolè a karaktè, ou gen chanje yo soti nan prive a piblik:
Ziehe den Collide, der deaktiviert werden soll in das entsprechende Feld. Befindet sich über dir eine „Decke“ verlangsamt sich dein Charakter, wenn du die Ducken-Taste drückst.