ໃນຕອນເລີ່ມຕົ້ນ, ເພີ່ມສະຄຣິບໃto່ໃຫ້ກັບຕົວລະຄອນຂອງເຈົ້າ. ຕັ້ງຊື່ມັນເປັນ PlayerMovement Script. ທຳ ອິດພວກເຮົາຕ້ອງການເອກະສານອ້າງອີງຈາກ Script Movement Player ໄປຫາຕົວຄວບຄຸມຕົວລະຄອນ. ຕົວ ໜັງ ສືຖືກບອກໃຫ້ຍ້າຍຕົວລະຄອນ.
ໃນຕອນເລີ່ມຕົ້ນພວກເຮົາສ້າງຕົວແປ:
ຕົວຄວບຄຸມ CharacterController2D ສາທາລະນະ;
ຈາກນັ້ນເຈົ້າມີຕົວເລືອກໃນການລາກຕົວຄວບຄຸມຕົວລະຄອນໄປຍັງພື້ນທີ່ຫວ່າງ.
ທິດທາງແລະຄວາມໄວຂອງການເຄື່ອນໄຫວຕ້ອງຖືກກໍານົດສໍາລັບການເຄື່ອນໄຫວ. ເພື່ອເຮັດສິ່ງນີ້, ເຈົ້າຕ້ອງການຂໍ້ມູນຈາກຜູ້ຫຼິ້ນ:
ປຸ່ມລູກສອນຊ້າຍຫຼື A = 1
ປຸ່ມລູກສອນຂວາຫຼື D = -1
ມັນຄືກັນກັບຜູ້ຄວບຄຸມ.
horizontalMove = Input.GetAxisRaw ("ແນວນອນ");
ພື້ນທີ່ອັບເດດຈັດຕັ້ງການປ້ອນຂໍ້ມູນຈາກເຄື່ອງຫຼິ້ນ.
FixedUpdate ແມ່ນໃຊ້ສໍາລັບຟີຊິກ. ໜ້າ ທີ່ນີ້ແມ່ນຕ້ອງການ.
ສ້າງຕົວແປອື່ນ:
float horizontalMove = 0f;
FixedUpdate ຍ້າຍຕົວອັກສອນ.
ເປັນໂມຄະ FixedUpdate ()
{
controller.Move (horizontalMove, false, false);
}
ຄຳ ຢືນຢັນທີ່ບໍ່ຖືກຕ້ອງອັນ ທຳ ອິດthatາຍຄວາມວ່າຜູ້ຫຼິ້ນບໍ່ຄວນຄູ້ເຂົ່າແລະອັນທີສອງທີ່ລາວບໍ່ຄວນເຕັ້ນໄປຫາ.
ຄຳ ນິຍາມ ສຳ ລັບການຍ້າຍແມ່ນຕ້ອງການຢູ່ໃນ Script Controller Player:
ການເຄື່ອນຍ້າຍທີ່ເປັນໂມຄະສາທາລະນະ (ການເຄື່ອນທີ່ລອຍຕົວ, ການຄູ້ເຂົ່າບູຊາ, ການກະຕຸກ bool)
{}
ໃນຖານະເປັນຕົວແປຕໍ່ໄປເຈົ້າຕ້ອງການ:
floS ສາທາລະນະ runSpeed = 40f;
ການປ້ອນຂໍ້ມູນຈາກເຄື່ອງຫຼີ້ນແມ່ນຄູນດ້ວຍຄວາມໄວການແລ່ນ:
horizontalMove = Input.GetAxisRaw ("ລວງນອນ") * runSpeed;
ຖ້າຜູ້ຫຼິ້ນຍ້າຍຊ້າຍແລະຂວາ, ການເຄື່ອນຍ້າຍຈະຢູ່ທີ່ -40 ແລະ 40.
ການເຄື່ອນໄຫວດັ່ງກ່າວຍັງຄູນດ້ວຍ Time.fixedDeltaTime.
Time.fixedDeltaTime ແມ່ນເວລາຕັ້ງແຕ່ມີການເອີ້ນຟັງຊັນ FixedUpdate ຄັ້ງສຸດທ້າຍ. ອັນນີ້ລະບຸວ່າການເຄື່ອນໄຫວເກີດຂຶ້ນດ້ວຍຈໍານວນເທົ່າກັນ, ໂດຍບໍ່ຄໍານຶງເຖິງຄວາມຖີ່ຂອງການທໍາ ໜ້າ ທີ່ເອີ້ນວ່າແນວໃດ. ດັ່ງນັ້ນ, ຄວາມໄວຂອງຕົວລະຄອນແມ່ນຄືກັນ, ບໍ່ວ່າຈະເປັນລະບົບຫຼືເວທີໃດກໍ່ຕາມ.
ຖ້າ ຈຳ ນວນສັດຕົກລົງ, ມັນສາມາດປ່ຽນພື້ນດິນໄດ້ ໜ້ອຍ ໜຶ່ງ.
ນັ້ນແມ່ນເຫດຜົນທີ່ວ່າໃນ Rigidbody2D ການກວດຈັບການປະທະກັນປ່ຽນແປງຈາກການຕັດແຍກເປັນຕໍ່ເນື່ອງ.
ສຳ ລັບການໂດດ, ມັນຈະຖືກກວດເບິ່ງວ່າພວກເຮົາກົດປຸ່ມກະໂດດຫຼືບໍ່:
ຖ້າ (input.GetButtonDown ("Jump"))
{
jump = ຈິງ;
}
ອັນນີ້ຍັງຄວນເຮັດຢູ່ໃນຟັງຊັນ FixedUpdate. ຂໍ້ມູນຖືກໂອນດ້ວຍຕົວແປ Boolean:
bool jump = ຜິດ;
ຕົວປ່ຽນກະໂດດຍັງຖືກເພີ່ມພາຍໃຕ້ FixedUpdate.
ເມື່ອກົດປຸ່ມໂດດ, ສະຄິບ PlayerMovement ຈະສົ່ງຕໍ່ໄປຫາຜູ້ຄວບຄຸມທີ່ພວກເຮົາຕ້ອງການກະໂດດ. ຫຼັງຈາກນັ້ນມັນຈະເປັນອີກເທື່ອຫນຶ່ງ
ເຕັ້ນໄປຫາ = ບໍ່ຖືກຕ້ອງ;
ອັນນີ້ ຈຳ ເປັນຕ້ອງໄດ້ ກຳ ນົດເພາະວ່າພວກເຮົາບໍ່ຕ້ອງການຂ້າມໄປ ໜ້າ ຕະຫຼອດໄປ.
ບັນຫາອີກອັນ ໜຶ່ງ ແມ່ນວ່າເມື່ອຕົວລະຄອນພະຍາຍາມໂດດໄປສູ່ເວທີໃດ ໜຶ່ງ, ມັນຈະຕິດຢູ່ບ່ອນນັ້ນ. ຈາກນັ້ນຕົວລະຄອນຄວນຈະເລື່ອນລົງແລະຕົກລົງມາໃສ່ອັນນີ້. ເພື່ອເຮັດສິ່ງນີ້, ຕ້ອງມີອຸປະກອນຟີຊິກ. ພາຍໃຕ້ໂຄງການ, ຄລິກຂວາທີ່ສ້າງ –> ຟີຊິກວັດສະດຸ 2D
ຊື່ມັນ Slippery. ຕັ້ງ Friction ແລະ Bounciness ເປັນ 0. ເອົາ PhysicsMaterial ແລະລາກມັນໄປໃສ່ວັດສະດຸຈາກ BoxCollider ຂອງຜູ້ຫຼິ້ນ.
ຖ້າເຈົ້າໄດ້ ກຳ ນົດ collider ຫຼາຍອັນໃຫ້ກັບຕົວລະຄອນເອກ, ເຈົ້າຍັງສາມາດມອບອຸປະກອນຟີຊິກໃຫ້ກັບຕົວຕີອື່ນ other ໄດ້.
ຮູບແບບແປ້ນພິມໄດ້ຖືກ ກຳ ນົດຜ່ານ Unity InputManager. ເຈົ້າສາມາດຊອກຫາອັນນີ້ໄດ້ພາຍໃຕ້ການຕັ້ງຄ່າໂຄງການ.
ຄລິກຂວາໃສ່ປຸ່ມໂດດແລະເລືອກອົງປະກອບ Array ຊໍ້າກັນ. ຕັ້ງຊື່ມັນວ່າ "Crouch".
ຖ້າຜູ້ຫຼິ້ນຕ້ອງການຫຼິ້ນດ້ວຍປຸ່ມລູກສອນ, ພຽງແຕ່ກໍານົດປຸ່ມທາງເລືອກ.
ເຮັດຊ້ ຳ ຂັ້ນຕອນຕ່າງ jump ຈາກການໂດດໄປຫາການຄູ້ເຂົ່າ:
ໃນເວລາທີ່ປຸ່ມ crouch ຖືກປ່ອຍອອກມາ, ຕົວລະຄອນຄວນຈະຢຸດເຊົາການ crouching. ສະນັ້ນມັນບໍ່ໄດ້ຜົນຄືກັບການໂດດ. ຖ້າຜູ້ຫຼິ້ນຕ້ອງການຫຼິ້ນດ້ວຍປຸ່ມລູກສອນ, ພຽງແຕ່ກໍານົດປຸ່ມທາງເລືອກ.
ເພີ່ມຕໍ່ໄປນີ້ໃນຟັງຊັນອັບເດດ:
ອື່ນຖ້າ (Input.GetButtonUp ("Crouch"))
{
crouch = ບໍ່ຖືກຕ້ອງ;
}
ເພື່ອໃຫ້ພາກສ່ວນທີ່ກ່ຽວຂ້ອງປະກົດຂຶ້ນຢູ່ໃນຕົວຄວບຄຸມຕົວລະຄອນ, ເຈົ້າຕ້ອງປ່ຽນພວກມັນຈາກສ່ວນຕົວເປັນສາທາລະນະ:
ດຶງນັ້ນ Colliderເຊິ່ງຄວນຈະຖືກປິດການນຳໃຊ້ໃນຊ່ອງຂໍ້ມູນທີ່ກ່ຽວຂ້ອງ. ຖ້າມີ "ເພດານ" ຢູ່ເທິງເຈົ້າ, ລັກສະນະຂອງເຈົ້າຈະຊ້າລົງເມື່ອທ່ານກົດປຸ່ມ crouch.