สร้างโลกของคุณเอง
การโต้ตอบกับวัตถุ

การนำยานพาหนะมาใช้กับตัวละคร ZEPETO

18min

โดยการใช้คู่มือในการติดวัตถุเข้ากับตัวละคร ZEPETO คุณสามารถทำให้ตัวละครขี่ยานพาหนะ เช่น รถยนต์ เครื่องบิน สัตว์เลี้ยง ฯลฯ ได้เหมือนกับว่าตัวละครกำลังขี่มันอยู่

📘 กรุณาอ้างอิงไปที่คู่มือต่อไปนี้ [การแนบวัตถุกับตัวละคร ZEPETO]



การตั้งค่า Animator

เพื่อเปลี่ยนท่าทางของตัวละคร ZEPETO เมื่อขี่ยานพาหนะตามที่อธิบายข้างต้น คุณต้องปรับแต่ง Animator และตั้งค่าไว้ภายใต้ ZEPETOPlayers.
เพื่อเปลี่ยนท่าทางของตัวละคร ZEPETO เมื่อขี่ยานพาหนะตามที่อธิบายข้างต้น คุณต้องปรับแต่ง Animator และตั้งค่าไว้ภายใต้ ZEPETOPlayers.




1) สร้าง Animator Controller โดยไปที่ Project > Create > Animator Controller และเปลี่ยนชื่อเป็น VehicleZepetoAnimator.

Document image




2) ในแท็บ Animator ให้สร้างสถานะว่างโดยเลือก Create State > Empty.

Document image




3) เปลี่ยนชื่อให้เหมาะสมใน Inspector และกำหนดคลิปอนิเมชันให้กับ Motion.

Document image




  • ในการใช้ไฟล์คลิปอนิเมชันที่คุณต้องการ โปรดดูคู่มืออนิเมชันแบบกำหนดเอง

📘 โปรดดูคู่มือต่อไปนี้ [ใช้อนิเมชันแบบกำหนดเอง]



4) ลากและวาง VehicleZepetoAnimator ลงบน ZEPETOPlayers เพื่อทำการตั้งค่า

Document image


👍 เคล็ดลับ

  • หากความสูงของกล้องต้องเปลี่ยนแปลงขึ้นอยู่กับขนาดของรถ คุณสามารถตั้งค่าค่าของ Camera LookOffset ใน ZEPETOPlayers ได้



ตัวอย่างโค้ด

1) สร้าง TypeScript โดยไปที่ Project > Create > ZEPETO > TypeScript และเปลี่ยนชื่อเป็น RideVehicle.

2) เขียนสคริปต์ตัวอย่างตามที่แสดงด้านล่าง.

  • โปรดทราบว่าค่าการแปลงของยานพาหนะในตัวอย่างนี้ควรปรับให้ตรงกับ Vehicle Prefab เมื่อใช้งานจริง.
TypeScript




3) หลังจากเขียนสคริปต์เสร็จแล้ว ให้เพิ่มสคริปต์ลงใน GameObject ในฉาก

4) ใน Inspector ให้กำหนดทรัพยากร prefab ของรถและกระดูกตัวถังที่จะติดตั้ง

5) คลิกปุ่มเล่น แล้วคุณจะเห็นตัวละคร ZEPETO ขี่อยู่บนรถ

Document image




👍 เคล็ดลับ

  • คุณสามารถสร้างรถยนต์หลายประเภทได้โดยการเปลี่ยน Prefab ของรถและคลิปอนิเมชันของตัวละคร
Document image




ตัวอย่างการเปลี่ยนขนาดเมื่อบริโภคไอเทม

นี่คือตัวอย่างการใช้งานที่สนุก: การนำเสนอเนื้อหาที่ขนาดของตัวละครเปลี่ยนไปเมื่อบริโภคไอเทมขณะขี่รถ

1) ในตัวอย่างนี้ เราเตรียม prefab สองประเภทและตั้งแท็กของไอเทมที่เพิ่มขนาดเมื่อบริโภคเป็น "เพิ่ม" และไอเทมที่ลดขนาดเป็น "ลด"

2) เพิ่ม Collider ให้กับแต่ละไอเทมและตรวจสอบให้แน่ใจว่าได้เลือก IsTrigger

Document image

Document image




3) สร้าง TypeScript โดยไปที่ Project > Create > ZEPETO > TypeScript และเปลี่ยนชื่อเป็น ChangeObjectSize.

4) เขียนสคริปต์ตัวอย่างตามที่แสดงด้านล่าง.

TypeScript




  • ส่วนสำคัญของโค้ดคือการปรับเปลี่ยน localScale เพื่อเปลี่ยนขนาดของตัวละคร ZEPETO เมื่อมันสัมผัสกับแต่ละรายการ.
    • ปรับเปลี่ยนตัวเลขสำหรับการเปลี่ยนขนาดได้ตามต้องการ
    • แต่ต้องแน่ใจว่าจัดการข้อยกเว้นเพื่อป้องกันไม่ให้ขนาดเล็กกว่าค่า (1,1,1).

5) สคริปต์นี้ควรเพิ่มไปยังตัวละคร ZEPETO ที่สร้างขึ้นในระหว่างการทำงาน. ดังนั้นให้ปรับเปลี่ยนสคริปต์ RideVehicle ที่แนบยานพาหนะดังนี้.

TypeScript




  • ได้เพิ่มโค้ดเพื่อเพิ่มสคริปต์ ChangeObjectSize ในระหว่างการทำงานแล้ว

6) คลิกที่ปุ่มเล่น และคุณจะเห็นขนาดของตัวละครเปลี่ยนแปลงทุกครั้งที่มันบริโภคไอเท็ม

Document image




การโต้ตอบกับยานพาหนะ

โดยการใช้คู่มือการโต้ตอบ จะสามารถดำเนินการขึ้นรถที่ตำแหน่งที่ต้องการหลังจากโต้ตอบกับมันได้

📘 โปรดดูคู่มือต่อไปนี้.[การโต้ตอบกับวัตถุ]



การตั้งค่า

1) ตั้งค่าวัตถุ DockPoint และ UI prefab บน prefab ของยานพาหนะของคุณในลักษณะเดียวกับคู่มือการโต้ตอบ.

Slime Prefab ที่ตั้งค่า Dock Point
Slime Prefab ที่ตั้งค่า Dock Point




2) ใน Unity editor ให้แน่ใจว่าปุ่มสลับ gizmo การแปลงที่ด้านบนตั้งค่าเป็น Local และหมุนมันเพื่อให้แกน Z (ลูกศรสีน้ำเงิน) ชี้ออกจากวัตถุ.

Slime Prefab ที่ตั้งค่า Collider
Slime Prefab ที่ตั้งค่า Collider




3) เพิ่มคอมโพเนนต์ Collider และตรวจสอบตัวเลือก isTrigger.

4) ปรับขนาดของ Collider ให้เหมาะสมกับช่วงที่ผู้เล่นสามารถโต้ตอบกับวัตถุได้.

การตั้งค่าปุ่ม UI ที่เสร็จสมบูรณ์
การตั้งค่าปุ่ม UI ที่เสร็จสมบูรณ์




5) สร้างวัตถุเปล่าเป็นลูกของ DockPoint โดยไปที่ Hierarchy > สร้างวัตถุเปล่า และเปลี่ยนชื่อเป็น IconPos.

Document image




6) ตั้งค่า PrefIconCanvas ในลักษณะเดียวกับคู่มือการโต้ตอบของวัตถุ จากนั้นทำให้มันเป็น prefab.

Document image




7) ขั้นตอนเพิ่มเติม: สร้างปุ่มลงจากรถ

  • สร้างปุ่มเป็นลูกของวัตถุรถโดยไปที่ Hierarchy > UI > Button และเปลี่ยนชื่อเป็นปุ่มลงจากรถ.



การเพิ่มอนิเมชันการขึ้นรถให้กับรถ

เมื่อมีตัวละครขึ้นหรือลงจากรถ พวกเขาต้องมีการตั้งค่าอนิเมเตอร์ที่เป็นธรรมชาติเพื่อให้ตรงกัน.

คู่มือด้านล่างจะช่วยคุณในการตั้งค่าอนิเมเตอร์ที่จำเป็นสำหรับการขึ้นหรือลง.

โปรดดูคู่มือเกี่ยวกับการใช้อนิเมชันที่กำหนดเองเพื่อเพิ่มสถานะอนิเมชันนั่งให้กับอนิเมเตอร์ที่กำหนดเองของคุณ.

📘 โปรดดูคู่มือต่อไปนี้. [การใช้อนิเมชันที่กำหนดเอง]



1) คลิกขวาที่สถานะการเคลื่อนไหวที่เพิ่มเข้ามา คลิกที่ Make Transition เพื่อสร้างการเปลี่ยนแปลงจาก Idle ไปยัง Sitting และกลับจาก Sitting ไปยัง Idle เลือกการเปลี่ยนแปลงที่สร้างขึ้นและยกเลิกการเลือกตัวเลือก Has Exit Time.

Document image




2) ใน Animator ที่กำหนดเอง → Parameters → [ + ] เพิ่ม Bool Condition และเปลี่ยนชื่อเป็น isRiding.

Document image




3) สำหรับการเปลี่ยนแปลงจากสถานะ Sitting ไปยัง Idle คลิกที่ Conditions → [ + ] และเพิ่ม isRiding Condition โดยตั้งค่าตัวเลือกเป็น false.

Document image




4) สำหรับการเปลี่ยนแปลงจากสถานะ Idle ไปยัง Sitting คลิกที่ Conditions → [ + ] และเพิ่ม isRiding Condition โดยตั้งค่าตัวเลือกเป็น true.

Document image




สคริปต์

เขียนสคริปต์ InteractionIcon.ts เช่นเดียวกับในคู่มือการโต้ตอบ ซึ่งจะแสดง UI การโต้ตอบเมื่อเข้าสู่พื้นที่กระตุ้นของ prefab ยานพาหนะ.

เพิ่ม InteractionIcon ZEPETOScript ที่เขียนไว้ในวัตถุ DockPoint และกำหนด Pref Icon Canvas และ Icon Position ใน inspector.

ดูตัวอย่างโค้ดใน RideVehicleExample ด้านล่างเพื่อดูวิธีการขึ้นรถหลังจากโต้ตอบกับ UI.

TypeScript




  • ลำดับการทำงานของสคริปต์มีดังนี้:
    • เริ่มต้น()
      • เมื่อคลิกที่ไอคอน this._interactionIcon จะถูกปิดการใช้งาน และฟังก์ชัน DoInteraction() จะถูกเรียกใช้.
    • DoInteraction()
      • ตั้งค่าค่าการเปลี่ยนแปลงของ animator เพื่อเล่นอนิเมชันนั่ง.
      • เริ่มต้น coroutine Snap Bone() เพื่อเชื่อมโยง bodyBone ของตัวละคร ZEPETO กับ targetTransform.
      • ใช้ฟังก์ชัน this._localCharacter.StateMachine.constraintStateAnimation = true; เพื่อปิดการเปลี่ยนแปลงของ animator ปัจจุบัน โดยล็อคอนิเมชันที่กำลังเล่นอยู่.
      • พ่อแม่ของวัตถุรถยนต์เปลี่ยนเป็นตัวละคร ZEPETO.
      • ปุ่มลงจากรถที่มุมขวาบนถูกเปิดใช้งาน.
    • หยุดการโต้ตอบ()
      • ตั้งค่าค่าการเปลี่ยนแปลงของ animator เพื่อเล่นอนิเมชันอยู่เฉยๆ.
      • เปิดใช้งานการเปลี่ยนแปลงของ animator อีกครั้งเพื่อให้อนิเมชันที่เหมาะสมเล่นตามสถานการณ์.
      • ตั้งค่าพ่อแม่ของวัตถุรถยนต์เป็น null.
      • ปิดการใช้งานปุ่มลงจากรถ.
    • this.getOffBtn.onClick
      • ฟังก์ชัน StopInteraction() ถูกเรียกใช้.
      • this._interactionIcon ถูกเปิดใช้งาน.



เพิ่มสคริปต์ RideVehicleExample ที่เขียนไว้ลงใน DockPoint และกำหนดปุ่ม Get Off และ prefab ของยานพาหนะใน inspector.

Document image




[▶︎(เล่น)] กดปุ่มเล่นเพื่อทดลองขึ้นรถ.

หน้าจอผลลัพธ์
หน้าจอผลลัพธ์




👍 เคล็ดลับ

  • ตัวอย่างข้างต้นเป็นตัวอย่างของเนื้อหาที่ไม่ถือว่ามีการซิงโครไนซ์แบบผู้เล่นหลายคน.
  • ในการดำเนินการซิงโครไนซ์แบบผู้เล่นหลายคน คุณต้องซิงโครไนซ์ข้อมูล เช่น รถที่ผู้เล่นแต่ละคนกำลังนั่งอยู่ ขนาดและตำแหน่งของรถ เช่น สถานะห้อง.