บทเรียน
สร้างไอเท็มกินโลก
7นาที
ตัวอย่างโครงการ 📘 ไฟล์โครงการที่ใช้ในบรรยาย https //github com/naverz/zepeto world sample/tree/main/assets/chapter2 https //github com/naverz/zepeto world sample/tree/main/assets/chapter2 สรุป สรุป จากสิ่งที่เราเรียนรู้ในบทที่ 1 เราจะสร้างโลกที่มีไอเท็มกินได้โดยใช้ความเร็วในการเคลื่อนที่ของตัวละครและการควบคุมการกระโดด ความยาก ระดับเริ่มต้น เวลาที่ต้องใช้ 30 นาที เป้าหมายของโครงการ การจัดการการซื้อสินค้าผ่านเหตุการณ์ ontrigger เข้าใจวิธีการใช้ text ui สร้าง ui controller เพื่อสะท้อนการซื้อสินค้าใน text ui เข้าใจวิธีการควบคุมความสูงของการกระโดดของตัวละคร zepeto เข้าใจวิธีการควบคุมความเร็วในการเคลื่อนที่ของตัวละคร zepeto 🎬 วิดีโอของโลกที่เสร็จสมบูรณ์ https //www youtube com/watch?v=goeopqfcbbs https //www youtube com/watch?v=goeopqfcbbs สคริปต์ charactercontroller ts import { zepetoscriptbehaviour } from 'zepeto script' import { spawninfo, zepetoplayers, localplayer, zepetocharacter } from 'zepeto character controller' import { worldservice } from 'zepeto world'; export default class charactercontroller extends zepetoscriptbehaviour { start() { //gets the userid (logged in through editor) zepetoplayers instance createplayerwithuserid(worldservice userid,new spawninfo(), true); zepetoplayers instance onaddedlocalplayer addlistener(() => { let player localplayer = zepetoplayers instance localplayer; }); } } getitem ts import { collider, vector3, gameobject, transform } from 'unityengine'; import { zepetocharacter, zepetoplayer, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour, zepetoscriptinstance } from 'zepeto script'; // import custom script from path import uicontroller from ' /uicontroller'; export default class getitem extends zepetoscriptbehaviour { public extcomponentgameobject gameobject; private extcomponent uicontroller; private zepetocharacter zepetocharacter; start() { //zepeto character object zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; }); //script import this extcomponent = this extcomponentgameobject getcomponent\<uicontroller>(); } ontriggerenter(collider collider) { if (this zepetocharacter == null || collider gameobject != this zepetocharacter gameobject) return; //sends a message of raising a count after eating an item this extcomponent increasecount(); //destroy item gameobject destroy(this gameobject); } } jumppower ts import { collider } from 'unityengine'; import { zepetoplayers, zepetocharacter } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script'; export default class jumppower extends zepetoscriptbehaviour { public jumppower number = 5; private zepetocharacter \ zepetocharacter; start() { //วัตถุของตัวละคร zepeto zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; }); } ontriggerenter(collider collider) { if (this zepetocharacter == null || collider gameobject != this zepetocharacter gameobject) return; //เพิ่มพลังกระโดด this zepetocharacter additionaljumppower = this jumppower; } ontriggerexit(collider collider) { //คืนพลังกระโดดกลับเป็นปกติ this zepetocharacter additionaljumppower = 0; } } speedup ts import { collider, gameobject, waitforseconds } from 'unityengine'; import { zepetocharacter, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script'; export default class speedup extends zepetoscriptbehaviour { private zepetocharacter \ zepetocharacter; public runspeed number = 4; public waittime number = 3; start() { //วัตถุของตัวละคร zepeto zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; }); } ontriggerenter(collider collider) { if (this zepetocharacter == null || collider gameobject != this zepetocharacter gameobject) return; this zepetocharacter additionalrunspeed = this runspeed; this startcoroutine(this doroutine()); } doroutine() { //รอเวลาตามค่าที่กำหนด yield new waitforseconds(this waittime); //คืนความเร็วในการวิ่งกลับเป็นปกติ this zepetocharacter additionalrunspeed = 0; } } uicontroller ts import { zepetoscriptbehaviour } from 'zepeto script'; import { text } from "unityengine ui"; import { gameobject } from 'unityengine'; export default class uicontroller extends zepetoscriptbehaviour { public resultui text; public maxcount number = 7; private stringproperty string; private message string; private count number; start() { //กำหนดค่าเริ่มต้น this message = "รายการ"; this count = 0; } public increasecount() { this count++; if(this count >= this maxcount) { this resultui text = "เคลียร์!"; } else { this stringproperty = `${this message} ${this count}`; this resultui text = this stringproperty; } } }