教程

制作一个可以吃东西的世界

7min
示例项目 📘 讲座中使用的项目文件 https //github com/naverz/zepeto world sample/tree/main/assets/chapter2 https //github com/naverz/zepeto world sample/tree/main/assets/chapter2 总结 总结 基于我们在第一章中学到的内容,我们将使用角色移动速度和跳跃控制制作一个吃东西的世界。 难度 初学者 所需时间 30分钟 项目目标 使用 ontrigger 事件处理物品获取 了解如何应用文本用户界面 创建用户界面控制器以在文本用户界面中反映物品获取 了解如何控制 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() { //获取用户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; } } }