用户:
神岛吉吉喵查看:46 回复:105 评论:46 创建时间:2021-06-11T11:31:09

大噶好,我是你们的好朋友,更新喵~
奉上今日份的神奇代码岛更新内容
绝对是让代码师和音效师狂喜的功能!

1、新增动画API
要说新增的动画API的功能,总结起来就一句话:
能有效减少代码师们的掉头发数量![]()

以往想要实现一段动画效果
必须用代码不断检测运行的状态
有了动画API之后,你只需要把动画的“关键帧”设定好
比如一段路程的起点、拐点和终点
剩下的就交给系统吧
总而言之就是用更简单的代码实现和以往同样的功能
让喵喵用这个视频来解释吧:
const elevator = world.querySelector('#电梯板-1') //获取电梯板实体
elevator.fixed = true //不可推移
elevator.collides = true //可碰撞
const pos = elevator.position//电梯板原本的位置
const ani = elevator.animate([// 1+5+1+2=9, 总时间被切成9份
{ position: pos, duration: 1 },// 1/9 的时间停留在地面
{ position: pos, duration: 5 },// 5/9 的时间用于地面往楼顶移动
{ position: pos.add({ x: 0, y: 58, z: 0 }), duration: 1 },// 1/9 的时间停留在楼顶
{ position: pos.add({ x: 0, y: 58, z: 0 }), duration: 2 },// 2/9 的时间从楼顶回到地面
], {
duration: 16 * 9, //播放一个循环共用时9秒(系统默认每秒16帧)
iterations: 1,//动画只播放1次
direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
world.onPress(({ entity, button }) => {
if (button === Box3ButtonType.ACTION0) {//左键重新播放动画
ani.play({
duration: 16 * 9, //播放一个循环共用时9秒
iterations: Infinity,//动画无限次循环播放
direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
}
else if (button === Box3ButtonType.ACTION1) {//右键停止动画
ani.cancel()
}
})
ani.onReady(() => {//当动画开始播放时
world.say('电梯准备启动')
})
ani.onFinish(() => {//当动画结束播放时
world.say('电梯自己停了')
})
2、地图编辑器加入音乐搜索
一首合适的BGM是地图必不可少的一环
音乐搜索上线后
可以像搜索模型一样搜索其他小伙伴和自己创作的音乐
非常方便!

选择“场景——音效——背景乐”
为你的地图加上好听的BGM吧~


3、碰撞过滤系统快速设置
以往想要取消实体或者玩家之间的碰撞
得写一大串代码

现在只要在“场景——物理——碰撞过滤”中添加过滤组
就能轻松实现同样的功能
解放双手,去探索更多的代码功能吧!

4、通知系统
通知系统来咯!🤫
以后岛上的大事小事、
都会第一时间推送给大家

除了功能更新之外
喵喵还在《哈哈农场》以及《学习吧!小精灵》中
为大家准备了盛大的游戏更新


喜迎即将到来的端午节~
快扫码或者点击链接去领取你的端午礼物吧
《哈哈农场》:https://box3.fun/g/25766

《学习吧!小精灵》:https://box3.fun/g/57404

加入代码岛3.0官方内测Q喵
下面的二维码会扫出来什么呢?( =•ω•= )m

EnjoylST吉吉喵,能不能看看我的模型()我想上展览()
https://box3.codemao.cn/u/Pdx86UH8LfDU7Nr?tab=published_models
点赞0
评论
JYF_斗罗//控制⾯板
world.onPlayerJoin(({ entity }) => { //玩家进⼊游戏时
entity.player.onPress(async ({ button }) => { //每当有按钮被按下
if (button == Box3ButtonType.ACTION1) { //如果按钮是右键
const selection = await entity.player.dialog({
type: Box3DialogType.SELECT, //对话框类型为选择框
content: `${entity.player.name}`,
title: `控制⾯板`,
options: ['幽灵模式', '管理员特权', '服务器强制崩溃重启'],
})
if (selection) { //确保对话框不是点击x关闭
if (selection.value === '幽灵模式') {
if (entity.player.name == '幻想一笑而过') {
entity.player.spectator = !entity.player.spectator;
} else {
entity.player.dialog({ //弹出对话框
type: Box3DialogType.TEXT, //对话框类型为纯⽂本
content: `你不是管理员`,
title: '系统',
})
}
}
if (selection.value === '服务器强制崩溃重启') {
if (entity.player.name === '幻想一笑而过') {
const selection = await entity.player.dialog({
type: Box3DialogType.SELECT, //对话框类型为选择框
content: `真的确定要重启服务器吗?`,
title: `控制⾯板`,
options: ['是', '否'],
})
if (selection) {
if (selection.value === '是') {
world.say('作者 幻想一笑而过 使用了while循环')
world.say('服务器已强制崩溃即将重启')
while(1){}
}
}
} else {
entity.player.dialog({ //弹出对话框
type: Box3DialogType.TEXT, //对话框类型为纯⽂本
content: `你不是管理员`,
title: '系统',
})
}
}
if (selection.value === '管理员特权') {
if (entity.player.name === '幻想一笑而过' || entity.player.name === '全息碎影孙悟空_' || entity.player.name === '战神_皮卡' || entity.player.name === '四十七师副营长') {
const code = await entity.player.dialog({ //弹出对话框
type: Box3DialogType.INPUT, //对话框类型为输入框
content: `请输入指令`,
title: '系统',
});
try {
world.say('~>' + eval(code));点赞1
评论