สร้างโลกของคุณเอง
ผู้เล่นและตัวละคร: เคล็ดลับ
การซ่อนและแสดงรูปลักษณ์ของตัวละคร ZEPETO
3นาที
การใช้วิธี renderer คุณสามารถปิด renderer ของตัวละคร zepeto เพื่อทำให้มันมองไม่เห็นในกล้องได้ ต่อไปนี้คือตัวอย่างโค้ดเพื่อซ่อนและแสดงรูปลักษณ์ของตัวละครด้วยการกดปุ่ม 1\) สร้าง hierarchy > สร้างวัตถุเปล่าและเปลี่ยนชื่อเป็น hideshowcharacter 2\) สร้างโปรเจกต์ > สร้าง > zepeto > typescript และเปลี่ยนชื่อเป็น hideshowcharacter 3\) เพิ่มสคริปต์ไปยังวัตถุ hideshowcharacter 4\) เขียนสคริปต์ตัวอย่างตามที่แสดงด้านล่าง hideshowcharacter import { renderer } from 'unityengine'; import { button } from 'unityengine ui'; import { spawninfo, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script'; export default class hideshowcharacter extends zepetoscriptbehaviour { public hidecharacterbtn button; public showcharacterbtn button; start() { zepetoplayers instance onaddedlocalplayer addlistener(() => { this hidecharacterbtn onclick addlistener(() => { // ปิด renderer ของตัวละคร zepeto เพื่อทำให้มันมองไม่เห็นในกล้อง zepetoplayers instance localplayer zepetoplayer character getcomponentsinchildren\<renderer>() foreach(r => { r enabled = false; console log("ซ่อน"); }); }); this showcharacterbtn onclick addlistener(() => { zepetoplayers instance localplayer zepetoplayer character getcomponentsinchildren\<renderer>() foreach(r => { r enabled = true; console log("แสดง"); }); }); }); } } 5\) ใช้ canvas > button เพื่อเพิ่มปุ่มแต่ละปุ่มลงบนหน้าจอและกำหนดให้กับสคริปต์ใน inspector 6\) กดปุ่ม \[▶︎(เล่น)] เพื่อรันมัน เปลี่ยนเลเยอร์ของตัวละครเพื่อจัดการการซ่อน นอกจากการปิดการใช้งาน renderer ของตัวละครแล้ว คุณยังสามารถซ่อนและแสดงรูปลักษณ์ของตัวละครได้อีกด้วย สิ่งนี้ทำได้โดยการใช้ culling mask ในกล้อง zepeto culling mask ช่วยให้คุณสามารถทำให้เลเยอร์เฉพาะเป็นมองไม่เห็นได้ เมื่อสร้างตัวละคร zepeto จะไม่มีเลเยอร์ที่ตั้งค่าไว้ตามค่าเริ่มต้น โค้ดตัวอย่างต่อไปนี้แสดงวิธีทำให้เลเยอร์เฉพาะมองไม่เห็นในกล้อง zepeto และจากนั้นเปลี่ยนเลเยอร์ของตัวละคร zepeto เมื่อคลิกปุ่มเพื่อซ่อนและแสดงมัน import { zepetoscriptbehaviour } from 'zepeto script'; import { camera, layermask, transform } from "unityengine"; import { zepetocharacter, zepetoplayers } from "zepeto character controller"; import { button } from "unityengine ui"; // ฟังก์ชันที่เปลี่ยนเลเยอร์ของวัตถุย่อยทั้งหมดของตัวละคร function changelayersrecursively(transform transform, layer string, fromlayer? string) void { if (!transform || !layer || layer length === 0) { return; } if (fromlayer) { if (transform gameobject layer === layermask nametolayer(fromlayer)) { transform gameobject layer = layermask nametolayer(layer); } } else { transform gameobject layer = layermask nametolayer(layer); } for (let i = 0; i < transform childcount; i++) { let child = transform getchild(i); changelayersrecursively(child, layer, fromlayer); } } export default class changecameralayer extends zepetoscriptbehaviour { private zepetocamera camera; public hidecharacterbtn button; public showcharacterbtn button; start() { zepetoplayers instance onaddedlocalplayer addlistener(() => { let character = zepetoplayers instance localplayer zepetoplayer character; this zepetocamera = zepetoplayers instance localplayer zepetocamera camera; // เพิ่มเลเยอร์ไปยัง culling mask this zepetocamera cullingmask |= (1 << layermask nametolayer("player")); // ลบเลเยอร์ออกจาก culling mask this zepetocamera cullingmask &= (1 << layermask nametolayer("transparentfx")); this hidecharacterbtn onclick addlistener(() => { this sethiddenlayer(character); }); this showcharacterbtn onclick addlistener(() => { this setplayerlayer(character); }); }); } setplayerlayer(playerobject zepetocharacter) { changelayersrecursively(playerobject transform, "player"); } sethiddenlayer(playerobject zepetocharacter) { changelayersrecursively(playerobject transform, "transparentfx"); } }