สร้างโลกของคุณเอง
ผู้เล่นและตัวละคร: ขั้นสูง

เลเยอร์การชนของกล้อง

7min

ภาพรวม

ZepetoCamera ที่สร้างขึ้นผ่าน ZepetoPlayers สามารถควบคุมการชนทางกายภาพระหว่างกล้องและวัตถุในเกมได้ผ่านการตั้งค่าการชนของกล้อง.

การชนของกล้องคือเมื่อกล้องชนกับวัตถุในฉาก.

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

มาดูตัวอย่างสองตัวอย่างต่อไปนี้กันเถอะ.

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

โดยการเปิดใช้งานการชนของกล้อง การเคลื่อนไหวของกล้องจะได้รับผลกระทบทางกายภาพ ซึ่งหมายความว่าสถานที่ที่ผู้เล่นไม่สามารถมองเห็นจะไม่สามารถถูกส่องสว่างโดยกล้อง ซึ่งช่วยให้มีการแสดงผลที่สมจริงมากขึ้น.

Document image




การตั้งค่าการชนของกล้อง ZepetoPlayers

1) คุณสามารถตั้งค่าการชนที่กล้องตรวจจับต่อเลเยอร์ได้

  • ในการตั้งค่าหรือเพิ่มเลเยอร์ผู้ใช้ ให้กดเมนูเลเยอร์ในหน้าต่าง Inspector และเลือก เพิ่มเลเยอร์
  • เลเยอร์ที่ผู้ใช้สามารถเพิ่มได้สามารถมีหมายเลขเป็น Layer3 และ Layer6 หรือสูงกว่า เลเยอร์0 ~ 2 และ Layer6 ~ 7 เป็นเลเยอร์เริ่มต้นของ Unity
Document image




2) เลือกวัตถุที่คุณต้องการให้กล้องใช้การตัดสินใจเกี่ยวกับการชน และจากนั้นเลือกเลเยอร์ที่คุณตั้งค่าไว้

Document image




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

Document image




4) ตอนนี้กดปุ่มเล่นเพื่อเรียกใช้งานและคุณจะเห็นว่ากล้อง Zepeto เคลื่อนที่ผ่านพื้นและผนังโดยไม่ทำลายมัน.

Document image




ตั้งค่าเป็นสคริปต์ในระหว่างการทำงาน

  1. คุณสามารถกำหนดการชนของกล้องแบบไดนามิกในระหว่างการทำงานได้
  2. ด้านล่างนี้คือสคริปต์เพื่อกำหนดหมายเลข collisionLayer ที่ลงทะเบียนเป็นตัวแปรสาธารณะในฐานะเลเยอร์มาสก์ในระหว่างการทำงาน
  • กุญแจคือการกำหนดเลเยอร์มาสก์ที่จะเลือกใน ZepetoPlayers.instance.cameraData.layer
CameraCollisionManager


3. คำอธิบายสคริปต์

  • เพื่อที่จะเขียนสคริปต์เลเยอร์และนำไปใช้กับกล้อง เราจำเป็นต้องใช้ LayerMask.
  • LayerMask จะมีค่าที่ป้อนผ่านการดำเนินการแบบบิตไวส์.
    • LayerMask แสดงเป็นค่าจำนวนเต็ม โดยที่แต่ละบิตบ่งบอกว่าเลเยอร์นั้นรวมอยู่ด้วยหรือไม่.
    • ตัวอย่างเช่น หาก LayerMask มีค่าเป็น 5 (00000101 ในฐานสอง) เราสามารถพูดได้ว่าเลเยอร์ 0 และเลเยอร์ 2 รวมอยู่ด้วย.
  • layerMaskValue |=: การดำเนินการแบบบิตไวส์นี้รวมค่า layerMaskValue ที่มีอยู่และค่าที่คำนวณใหม่ในปฏิบัติการ OR.
    • หากค่า layerMaskValue ที่มีอยู่เป็น 00000001 ในฐานสอง และค่าที่คำนวณใหม่เป็น 00000100 การ OR ค่าทั้งสองจะส่งผลให้ได้ 00000101 ในฐานสอง.
    • สิ่งนี้ทำให้แน่ใจว่าเลเยอร์ 0 และเลเยอร์ 2 รวมอยู่ใน LayerMask.
  • ในกรณีของ EnhancedCamera เลเยอร์ Player จะไม่ถูกตั้งค่าเป็นเลเยอร์การชนของกล้องเพื่อป้องกันไม่ให้กล้องตัดกันกับตัวละคร.



อัปเดต 11 Oct 2024
Doc contributor
Doc contributor
หน้านี้ช่วยคุณได้หรือไม่?