การสร้างวัตถุที่ติดตามตัวละคร
ด้วยการใช้คอมโพเนนต์ NavMeshAgent คุณสามารถสร้างวัตถุ AI ที่ติดตามตัวละคร ZEPETO ได้
ในคู่มือนี้ เราจะสร้างวัตถุ Pet ที่ติดตามตัวละครของเรา
การสร้างวัตถุ Pet
เปิดหน้าต่าง Navigation (Obsolete)

ไปที่เมนูด้านบนของ Unity แล้วคลิก Window > AI > Navigation (Obsolete) เพื่อเปิดหน้าต่าง Navigation (Obsolete)
กำหนดพื้นที่ที่วัตถุ Pet สามารถเคลื่อนที่ได้

ในหน้าต่าง Navigation (Obsolete) ให้คลิกแท็บ Object จากนั้นเลือกพื้น ผนัง หรือวัตถุกีดขวางจาก Hierarchy และเพิ่มเข้าไปใน Object
- สิ่งนี้ทำให้วัตถุ Pet รับรู้พื้นที่ที่สามารถเดินได้หรือสิ่งกีดขวาง
อย่าลืมตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายที่ Navigation Static แล้ว
✏️ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ NavMesh กรุณาดูวิดีโอด้านล่าง
สร้าง NavMesh

คลิกแท็บ Bake แล้วกดปุ่ม Bake ที่ด้านล่างเพื่อสร้าง NavMesh
เพิ่ม NavMeshAgent
เลือกวัตถุ Pet จาก Hierarchy แล้วไปที่ Inspector เพื่อเพิ่มคอมโพเนนต์ NavMeshAgent
- Agent ในที่นี้หมายถึงวัตถุ Pet ที่เคลื่อนที่ด้วยระบบนำทางของ NavMesh
คุณสามารถปรับขนาด ความเร็วในการเคลื่อนที่ ความเร็วในการหมุน ความเร่ง และระดับความสูงที่ถือว่าเป็นสิ่งกีดขวางได้
✏️ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ NavMeshAgent ดูลิงค์นี้

ในตัวอย่างนี้ เราตั้งค่า Stopping Distance ของ NavMeshAgent เป็น 3 เพื่อให้ Pet หยุดเมื่ออยู่ห่างจากผู้เล่น 3 หน่วย
สร้างสคริปต์ PetController
ในหน้าต่าง Project ให้คลิกปุ่ม + > ZEPETO > TypeScript เพื่อสร้างสคริปต์ใหม่ จากนั้นเปลี่ยนชื่อเป็น PetController
เปิดสคริปต์แล้วคัดลอกโค้ดด้านล่างไปวาง
import { Transform } from 'UnityEngine'
import { NavMeshAgent } from 'UnityEngine.AI';
import { ZepetoPlayers } from 'ZEPETO.Character.Controller'
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
import { WorldService } from 'ZEPETO.World';
export default class PetController extends ZepetoScriptBehaviour {
private _target: Transform;
private _navMeshAgent: NavMeshAgent;
Start() {
this._navMeshAgent = this.GetComponent<NavMeshAgent>();
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
this._target = ZepetoPlayers.instance.GetPlayer(WorldService.userId).character.transform;
})
}
Update() {
if (this._target == null) {
return;
}
this._navMeshAgent.SetDestination(this._target.position);
}
}คำอธิบายสคริปต์
- เมื่อเริ่มสคริปต์ ระบบจะตั้งค่า _target เป็นตัวละคร ZEPETO ของคุณ
- ในฟังก์ชัน Update จะใช้ SetDestination ของ NavMeshAgent เพื่อกำหนดตำแหน่งของตัวละครเป็นจุดหมายปลายทางในทุกเฟรม
นำสคริปต์ PetController ไปใช้กับวัตถุ Pet
เลือกวัตถุ Pet จาก Hierarchy ไปที่ Inspector แล้วคลิก Add Component > Zepeto Script
จากนั้นลากสคริปต์ PetController ที่สร้างไว้ไปวางในช่อง Script
คลิกปุ่มเล่น

ตอนนี้คุณจะเห็นวัตถุ Pet ติดตามตัวละครของคุณและหลีกเลี่ยงสิ่งกีดขวางอย่างเป็นธรรมชาติ เช่น กำแพง
การสร้าง Pet บนศีรษะตัวละคร
หากคุณต้องการให้ Pet ติดอยู่บนร่างกายของตัวละคร แทนที่จะติดตาม ก็สามารถใช้วิธีการยึดวัตถุได้
✏️ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการติดวัตถุ โปรดดูคู่มือ การแนบวัตถุกับตัวละคร ZEPETO
สร้างสคริปต์ AttachPetController
ใน Project ให้คลิก + > ZEPETO > TypeScript แล้วตั้งชื่อสคริปต์ว่า AttachPetController
เปิดสคริปต์แล้ววางโค้ดด้านล่าง
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoCharacter, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { Transform, Animator, GameObject, HumanBodyBones, Object } from 'UnityEngine';
export default class AttachPetController extends ZepetoScriptBehaviour {
public Pet: GameObject;
public bodyBone: HumanBodyBones;
Start() {
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
const localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
const animator: Animator = localCharacter.ZepetoAnimator;
const bone: Transform = animator.GetBoneTransform(this.bodyBone);
Object.Instantiate(this.Pet, bone) as GameObject;
});
}
}คำอธิบาย
- เมื่อสคริปต์เริ่มทำงาน ระบบจะค้นหา Local Player และ Animator ของตัวละคร
- จากนั้นจะระบุส่วนของร่างกายที่เลือกไว้ใน bodyBone และระบุตำแหน่ง
- วัตถุ Pet จะถูกสร้างขึ้น (Instantiate) ที่ตำแหน่งนั้น และตั้งค่า parent เป็นส่วนของร่างกายที่พบ
นำสคริปต์ AttachPetController ไปใช้กับวัตถุใหม่
ใน Hierarchy คลิก + > Create Empty เพื่อสร้างวัตถุใหม่ และตั้งชื่อว่า AttachPetController
จากนั้นไปที่ Inspector คลิก Add Component > Zepeto Script และลากสคริปต์ไปใส่ในช่อง Script
ลากวัตถุ Pet ไปยังช่อง Pet และเลือกส่วนของร่างกายจากเมนูแบบดรอปดาวน์ของ bodyBone เพื่อให้ Pet ยึดติด

คลิกปุ่มเล่นเพื่อดูว่า Pet ปรากฏบนส่วนของร่างกายที่คุณเลือก