Kuti musunthe umunthu wanu mukufunikira wowongolera khalidwe. Poyambira ndi malo okhala ndi zowombana. Mufunikanso khalidwe. Khalidweli limafunikira yakeyake Collider. Chotsatira ndikuwonjezera 2D Rigidbody.
Pangani zolemba pamtundu wanu ndikutcha Character2DController.
Sinthani script kuti ikhale yachinsinsi:
Kwa x-axis timafunikira cholowetsera:
var movement = Input.GetAxis ("Horizontal")
1 imayimira batani lakumanja ndi -1 kwa kiyibodi yakumanzere.
Tikufuna vekitala 3 yatsopano ya x-axis ngati mtengo wolowetsera:
transform.position + = newVector3 (kuyenda, 0, 0) * Nthawi.DeltaTime * MovementSpeed;
Udindo watsopano ukuwerengedwa kuchokera pa vekitala 3 * Time.DeltaTime * MovementSpeed
Chifukwa chake kuthamanga kwa mayendedwe kuyenera kuwonjezedwa monga kusinthasintha:
Kuyandama pagulu MovementSpeed = 1;
Zolemba zikuwoneka motere:
Ngati mumakanikiza kusewera mu Umodzi, mutha kusuntha chithunzichi kuchokera kumanzere kupita kumanja. Mutha kuwonjezera liwiro ngati khalidweli likuchedwa.
Tsopano pangani kutchula thupi lolimba:
payekha rigidbody2D rigidbody;
Onjezerani zotsatirazi pachigawo choyamba:
Kulimbitsa thupi = GetComponent ();
Zowonjezera zina zimafunika:
ngati (Input.GetButtonDown ("Jump"))
Mukufuna mphamvu mu y-axis yomwe imayambitsa kulumpha: Izi zimatchedwa JumpForce:
Rigidbody.AddForce (Vector3 (0 yatsopano, JumpForce) yatsopano;
JumpForce imayikidwa ngati chosinthika:
kuyandama pagulu JumpForce = 1;
Chigawocho chimapangitsa chidwi kuti mudumphe:
Rigidbody.AddForce (Vector3 yatsopano (0, JumpForce), ForceMode2D.Impulse);
Tsopano axis Y ikhoza kuyang'aniridwa kuti idumphe kamodzi kokha:
ngati (Input.GetButtonDown ("Jump") && Mathf.Abs (Rigidbody.velocity.y) <0.001f)
Zomalizidwa zimawoneka motere:
Ndikuphatikiza uku mutha kuyamba kusuntha. Zolemba zimayamba kukhala zovuta kwambiri ndi gawo lotsatirali. Kuti muchite izi, muyenera kusinthanso zida za rigidbody ku Rigidbody2D.
Mufunika zosintha zotsatirazi pogwada:
zoyandama zachinsinsi CrouchSpeed = .36f;
Movement Smoothing imagwiritsidwa ntchito poyendetsa kayendetsedwe kake:
kuyandama kwayekha MovementSmoothing = .05f;
Air Control amatanthauzira ngati wosewera amatha kuwongolera akadumpha kapena ayi:
bool yachinsinsi AirControl = zabodza;
WhatIsGround imatanthauzira mobisa kwa wosewera mpira:
payekha LayerMask WhatIsGround;
Groundcheck imayang'ana ngati wosewerayo ali pansi kapena ayi:
payekha Transform GroundCheck;
CeilingCheck imafufuza ngati pali malire apamwamba:
Kusintha kwayekha CeilingCheck;
CrouchDisableCollider imafotokoza kuti chovundikiracho chitha kuimitsidwa ngati wosewera mpira wagwada:
payekha Collider2D CrouchDisableCollider;
Zosintha zoyambirira tsopano zafotokozedwa:
Zosintha zina zimafunika:
const yoyandama GroundedRadius = .2f;
limatanthauzira utali wozungulira womwe ulumikizana kuti muwone ngati ali pamtundu womwewo.
buku lachinsinsi Lakhazikika;
imasonyeza ngati wosewerayo ali pansi kapena ayi.
const akuyandama CeilingRadius = .2f;
ndi utali wozungulira wa kudalirana kuti mudziwe ngati wosewerayo atha kuyimirira kapena ngati pali bulangeti pamwamba pawo.
bool yachinsinsi FacingRight = zowona;
Kuti mudziwe komwe wosewera akukumana nawo pano.
payekha Vector3 Velocity = Vector3.zero;
Chotsatira tikufunika dongosolo la Umodzi:
Mukuwonjezera:
kugwiritsa ntchito UnityEnginge.Events;
Kuphatikiza apo, UnityEvent imafunika kuzindikira kuti khalidwelo limagwera pambuyo polumpha kapena ayi:
mgwirizano paguluEvent OnLandEvent;
BoolEvent ikukhudzana ndi kugwada:
gulu la anthu BoolEvent: UnityEvent {}
pagulu BoolEvent OnCrouchEvent;
buku lachinsinsi linaliCrouching = zabodza;
Palibe ntchito yoyambira mu script, koma ntchito yogalamuka:
Kuyamba kumayamba pulogalamu ikayamba. Galamukani amatanthauza chinthu chomwe chimayambitsidwa mkati mwa chinthucho.
opanda kanthu Galamukani ()
{
Rigidbody2D = GetComponent ();
ngati (OnLandEvent == null)
OnLandEvent = UnityEvent () yatsopano;
ngati (OnCrouchEvent == null)
OnCrouchEvent = BoolEvent ();
}
Kenako timafotokozera malo a "Grounded" mwatsatanetsatane:
Wosewerayo amakhala pansi pomwe gawo lomwe likufotokozedwera likakumana ndi malo ochezera, omwe amatchedwa nthaka:
chinsinsi chachinsinsi cha FixedUpdate ()
{
bool wasGrounded = Wokhazikika;
Zokhazikika = zabodza;
Collider2D [] zophatikiza = Physics2D.OverlapCircleAll (GroundCheck.position, GroundedRadius, WhatIsGround);
chifukwa (int i = 0; i <zophatikizana. Kutalika; i ++)
{
ngati (zophatikizira [i] .gameObject! = gameObject)
{
Zokhazikika = zowona;
ngati (! anali Wozunguliridwa)
OnLandEvent.Invoke ();
}
}
}
Chotsatira ndikuti muwone ngati munthuyo wagwada, akhoza kuyimirira. Ngati sichoncho, agwadire:
Chosowa pagulu (kusunthira, kusuntha, kudumpha)
{
ngati (! crouch)
{
Ngati khalidwelo lili ndi bulangeti lomwe limawalepheretsa kuti adzuke, sungani:
ngati (Physics2D.OverlapCircle (CeilingCheck.position, CeilingRadius, WhatIsGround))
{
crouch = zoona;
}
}
Wosewera amatha kungolamulira chiwerengerocho ngati chili pansi kapena ngati AirControl yasinthidwa:
ngati (Wokhazikika || AirControl)
{
Pamene chiwerengerocho chagwada:
ngati (akugwada)
{
ngati (anali Kugwada)
{
wasCrouching = zoona;
OnCrouchEvent.Invoke (zoona);
}
china ngati (analiCouching)
{
wasCrouching = zabodza;
OnCrouchEvent.Invoke (zabodza)
}
Kuchepetsa liwiro ndi crouchSpeed kuchulukitsa:
kusuntha * = CrouchSpeed;
Chotsani chimodzi mwazowombazo pomwe chiwerengerocho chagwada kapena kukhokhoza:
ngati (CrouchDisableCollider! = null)
CrouchDisableCollider.enabled = zabodza;
} wina
{
Yambitsani cholingacho pomwe chiwerengerocho sichikugwada kapena kugwada:
ngati (CrouchDisableCollider! = null)
CrouchDisableCollider.enabled = zoona;
ngati (anali Kugwada)
{
wasCrouching = zabodza;
OnCrouchEvent.Invoke (zabodza);
}
}
Sunthani khalidweli pofufuza chandamale chandamale:
Vector3 targetVelocity = Vector2 yatsopano (suntha * 10f, Rigidbody2D.velocity.y);
Kenako ikopeni ndikuigwiritsa ntchito pamakhalidwe:
Rigidbody2D.velocity = Vector3.SmoothDamp (m_Rigidbody2D.velocity, targetVelocity, Ref Velocity, MovementSmoothing);
Malowedwe akasunthira kumanja ndipo wosewera akuloza kumanzere:
ngati (suntha> 0 &&! m_FacingRight)
tsegulani wosewerayo:
Tsegulani ();
Kupanda kutero, ngati zolowetsazo zisunthira kumanzere ndipo wosewerayo akuyang'ana kumanja:
china ngati (suntha <0 && FacingRight)
Sinthani wosewera:
Tsegulani ();
Wosewerayo akadumpha:
ngati (Wokhazikika && alumpha)
{
Onjezani mphamvu yowonekera kwa wosewera.
Zokhazikika = zabodza;
Rigidbody2D.AddForce (Vector2 yatsopano (0f, JumpForce));
pepala lopanda kanthu ()
{
Sinthani momwe wosewerayo amadziwika kuti akuyang'ana:
KutsogoloRight =!
Lonjezerani x-scale ya player ndi -1.
Vector3 theScale = kusintha.localScale;
Chikhalidwe.x * = -1;
kusintha.localScale = theScale;
}
}
Zomalizidwa zimawoneka motere: