教程
制作一个可以吃东西的世界
7 分
示例项目 📘 讲座中使用的项目文件 https //github com/naverz/zepeto world sample/tree/main/assets/chapter2 总结 true left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type 项目目标 使用 ontrigger 事件处理物品获取 了解如何应用文本用户界面 创建用户界面控制器以在文本用户界面中反映物品获取 了解如何控制 zepeto 角色的跳跃高度 了解如何控制 zepeto 角色的移动速度 🎬 完成世界的视频 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() { //获取用户id(通过编辑器登录) 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 uicontroller from ' /uicontroller'; export default class getitem extends zepetoscriptbehaviour { public extcomponentgameobject gameobject; private extcomponent uicontroller; private zepetocharacter zepetocharacter; start() { //zepeto角色对象 zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; }); //脚本导入 this extcomponent = this extcomponentgameobject getcomponent\<uicontroller>(); } ontriggerenter(collider collider) { if (this zepetocharacter == null || collider gameobject != this zepetocharacter gameobject) return; //发送吃掉物品后增加计数的消息 this extcomponent increasecount(); //销毁物品 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() { //等待waittime值 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; } } }
