
Lv.1
QQ:3346223415
签名:我正在做‘原始枪战’这个可能会上首页但是没有联机可能需要花费好几天的时间希望大家可以喜欢!这个作品点赞过10更新,点赞过100开源全代码(或者收藏过50),这个作品我换了2次才可以的,球球了! (*╯3╰)把你们手上的赞都给我吧!点赞收藏过500或者关注我就把我的所有粉丝关注一遍!FQ不可能(╯▽╰)我的点赞不可能那么多我可能想多了……我现在长期在box3代码岛里玩所以我可能以后的作品会拖更的...
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
console.clear()
const mscale = 1 / 16
const Quat = new Box3Quaternion(2, 0, 0, 1)
function bu喵yFollow(entity, mesh, y) {
const bu喵y = world.createEntity({
mesh,
position: entity.position,
meshScale: [mscale, mscale, mscale],
gravity: false, //不受重力影响
fixed: false, //可推移
collides: true, //可碰撞
friction: 0, //有摩擦力
mass: 0.01, //非常轻
})
const tgPos = entity.position//僚机的目标位置
const budPos = bu喵y.position//僚机的当前位置
const facing = entity.player.facingDirection//玩家的朝向
const ratio = 0.5//追随的灵敏度, 最好设在0.5左右, 1.0表示立即移到玩家位置
const dist = 0 //与玩家保持的距离
const yOffset = y //y轴位移, 保持僚机在头顶或脚下
const ticker = world.onTick(() => {
//要让小精灵跟在玩家背后, 需要计算xz轴的位移: 玩家朝向的反方向
const xOffset = facing.x * dist
const zOffset = facing.z * dist
//当前位置与目标位置在xyz轴的差距
const xDiff = tgPos.x - budPos.x
const yDiff = tgPos.y - budPos.y
const zDiff = tgPos.z - budPos.z
//计算xyz方向上 当前位置向目标位置靠拢的速度
const 喵 = (xDiff + xOffset) * ratio
const vy = (yDiff + yOffset) * ratio
const vz = (zDiff + zOffset) * ratio
bu喵y.velocity.set(喵, vy, vz)//设置僚机速度
if (bu喵y.velocity.sqrMag() > 0.005) {//速度要足够大, 才触发转向, 防止抖动
bu喵y.meshOrientation = Quat.rotateY(Math.atan2(zDiff, xDiff)) //让小精灵一直面向玩家
}
})
return () => {
ticker.cancel() //关掉tick循环
bu喵y.destroy() //移除僚机实体
}
}
world.onPlayerJoin(({ entity }) => {
entity.setPet = bu喵yFollow(entity, 'mesh/僵尸.vb', 2) //给玩家增加宠物
})
world.onPlayerLeave(({ entity }) => {
//玩家离开地图时, 切记一定要关掉tick循环以及销毁小精灵实体, 否则随着人数增加, 服务器积累到一定程度就会崩溃
entity.setPet() //干掉宠物
})
作业
2021-05-25T15:08:25 点赞:0
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
https://box3.codemao.cn/e/511bd1b6d667f3efc034
2021-05-25T15:23:19 点赞:0
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
抄
console.clear()
const mscale = 1 / 16
const Quat = new Box3Quaternion(0, 0, 0, 1)
function buddyFollow(entity, mesh, y) {
const buddy = world.createEntity({
mesh,
position: entity.position,
meshScale: [mscale, mscale, mscale],
gravity: false, //不受重力影响
fixed: false, //可推移
collides: true, //可碰撞
friction: 0, //无摩擦力
mass: 0.01, //非常轻
})
const tgPos = entity.position//僚机的目标位置
const budPos = buddy.position//僚机的当前位置
const facing = entity.player.facingDirection//玩家的朝向
const ratio = 0.5//追随的灵敏度, 最好设在0.5左右, 1.0表示立即移到玩家位置
const dist = 0 //与玩家保持的距离
const yOffset = y //y轴位移, 保持僚机在头顶或脚下
const ticker = world.onTick(() => {
//要让小精灵跟在玩家背后, 需要计算xz轴的位移: 玩家朝向的反方向
const xOffset = facing.x * dist
const zOffset = facing.z * dist
//当前位置与目标位置在xyz轴的差距
const xDiff = tgPos.x - budPos.x
const yDiff = tgPos.y - budPos.y
const zDiff = tgPos.z - budPos.z
//计算xyz方向上 当前位置向目标位置靠拢的速度
const 喵 = (xDiff + xOffset) * ratio
const vy = (yDiff + yOffset) * ratio
const vz = (zDiff + zOffset) * ratio
buddy.velocity.set(喵, vy, vz)//设置僚机速度
if (buddy.velocity.sqrMag() > 0.005) {//速度要足够大, 才触发转向, 防止抖动
buddy.meshOrientation = Quat.rotateY(Math.atan2(zDiff, xDiff)) //让小精灵一直面向玩家
}
})
return () => {
ticker.cancel() //关掉tick循环
buddy.destroy() //移除僚机实体
}
}
world.onPlayerJoin(({ entity }) => {
entity.setPet = buddyFollow(entity, 'mesh/无人机.vb', 2) //给玩家增加宠物
})
world.onPlayerLeave(({ entity }) => {
//玩家离开地图时, 切记一定要关掉tick循环以及销毁小精灵实体, 否则随着人数增加, 服务器积累到一定程度就会崩溃
entity.setPet() //干掉宠物
})
world.onPlayerJoin(({ entity }) => {
entity.player.addWearable({
bodyPart: Box3BodyPart.RIGHT_LOWER_ARM,
mesh: 'mesh/光剑.vb',
orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(Math.PI/2),
scale: new Box3Vector3(1, 1, 1),
offset: new Box3Vector3(0, 1, -0.15),
});
});
world.onPlayerJoin(({ entity }) => {
if (entity.player.name==="大喵原d8i6"||'难起的名字'){
Object.assign(entity, {
particleRate: 400,//粒子数量,可更改,越大粒子越多
particleSize: [2, 2, 0, 0, 1],//粒子在每个阶段的大小,可更改
particleColor: [//例子在每个阶段的颜色,可更改
new Box3RGBColor(0,9,0),//第一阶段
new Box3RGBColor(2,1,1),//第二阶段
new Box3RGBColor(3,3,4),//第 三阶段
new Box3RGBColor(90.9,6,99),//第四阶段
new Box3RGBColor(1.03,0,9),//第五阶段
new Box3RGBColor(1.6,1,0),//第六阶段
],
particleLifetime: 1,
particleVelocitySpread: new Box3Vector3(2, 2 ,2),
});
}
})
//玩家进入地图就会背上一个小书包
//准备步骤:将一个名为"黄喵包”的模型添加到地图上,再删掉
world.onPlayerJoin(({ entity }) => {
entity.player.addWearable({
bodyPart: Box3BodyPart.TORSO,//装备穿戴的位置在身上
mesh: 'mesh/黄喵包.vb',//装备是一个叫做“黄喵包”的模型
orientation: new Box3Quaternion(0, 1, 0, 0).rotateY(Math.PI/2),//将模型沿着Y轴旋转90度
scale: new Box3Vector3(0.5, 0.5, 0.5),//模型大小长宽高都缩小0.5倍
offset: new Box3Vector3(0, 0, -0.45),//装备的位置,向人背后偏移一些
});
});
// 添加检测玩家进入或离开 x:0-喵, y:0-20, z: 0-喵 的区域
const area = world.addTrigger({
selector: 'player',
bounds: {
lo: [0, 0, 0],
hi: [喵, 20, 喵],
},
})
// 需要用 onEnter() 和 onLeave() 触发事件
area.onEnter(({ entity }) => {
// 有玩家进入区域
});
area.onLeave(({ entity }) => {
// 有玩家离开区域
});
// 碰到岩浆受伤, 碰到字母H恢复生命
world.onVoxelContact(({ entity, voxel, x, y, z }) => { //当触碰方块
if (voxel === voxels.id('lava02')) { //如果方块类型是岩浆
entity.hurt(20) //受伤
} else if (voxel === voxels.id('H')) { //如果方块类型是H字母
entity.hp = entity.maxHp //恢复满血
voxels.setVoxel(x, y, z, '') //消掉H方块
}
})
console.clear()
world.onPlayerJoin(({ entity }) => {
entity.enableDamage = true //允许这个实体 受伤/喵亡/复活
entity.hurt(50) //去掉玩家半管血
console.log('hp:'+entity.hp) //现在受伤后只剩399了
console.log('maxHp:'+entity.maxHp) //生命值上限, box3里所有实体默认maxHp是100
})
// 当玩家进入游戏
world.onPlayerJoin(({ entity }) => {
// 如果玩家接触到了世界中的方块
entity.onVoxelContact(({ x, y, z }) => {
// 将方块变成空气
voxels.setVoxel(x, y, z, 0);
});
});
console.log('Welcome to Box 3!');
//一个模型
world.onPlayerJoin(({ entity }) => {
if (entity.player.name==="无人机"||'难起的名字'){
Object.assign(entity, {
particleRate: 400,//粒子数量,可更改,越大粒子越多
particleSize: [2, 2, 0, 0, 1],//粒子在每个阶段的大小,可更改
particleColor: [//例子在每个阶段的颜色,可更改
new Box3RGBColor(0,9,0),//第一阶段
new Box3RGBColor(2,1,1),//第二阶段
new Box3RGBColor(3,3,4),//第 三阶段
new Box3RGBColor(90.9,6,99),//第四阶段
new Box3RGBColor(1.03,0,9),//第五阶段
new Box3RGBColor(1.6,1,0),//第六阶段
],
particleLifetime: 1,
particleVelocitySpread: new Box3Vector3(2, 2 ,2),
});
}
})
2021-05-25T16:33:20 点赞:0
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
:.看҉҉我҉҉发҉҉的҉҉҉字҉҉,看҉҉我҉҉发҉҉的҉҉҉字҉҉,是҉҉不҉҉是҉҉有҉҉点҉҉奇҉҉怪҉҉,大҉҉家҉҉可҉҉以҉҉复҉҉制҉҉玩҉҉一҉҉玩҉҉
2021-05-26T17:56:39 点赞:0
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
console.clear() constmscale=1/16 constQuat=newBox3Quaternion(0,0,0,1) functionbu喵yFollow(entity,mesh,y){ constbu喵y=world.createEntity({ mesh, position:entity.position, meshScale:[mscale,mscale,mscale], gravity:false,//不受重力影响 fixed:false,//可推移 collides:true,//可碰撞 friction:0,//无摩擦力 mass:0.01,//非常轻 }) consttgPos=entity.position//僚机的目标位置 constbudPos=bu喵y.position//僚机的当前位置 constfacing=entity.player.facingDirection//玩家的朝向 constratio=0.5//追随的灵敏度,最好设在0.5左右,1.0表示立即移到玩家位置 constdist=0//与玩家保持的距离 constyOffset=y//y轴位移,保持僚机在头顶或脚下 constticker=world.onTick(()=>{ //要让小精灵跟在玩家背后,需要计算xz轴的位移:玩家朝向的反方向 constxOffset=facing.x*dist constzOffset=facing.z*dist //当前位置与目标位置在xyz轴的差距 constxDiff=tgPos.x-budPos.x constyDiff=tgPos.y-budPos.y constzDiff=tgPos.z-budPos.z //计算xyz方向上当前位置向目标位置靠拢的速度 const喵=(xDiff+xOffset)*ratio constvy=(yDiff+yOffset)*ratio constvz=(zDiff+zOffset)*ratio bu喵y.velocity.set(喵,vy,vz)//设置僚机速度 if(bu喵y.velocity.sqrMag()>0.005){//速度要足够大,才触发转向,防止抖动 bu喵y.meshOrientation=Quat.rotateY(Math.atan2(zDiff,xDiff))//让小精灵一直面向玩家 } }) return()=>{ ticker.cancel()//关掉tick循环 bu喵y.destroy()//移除僚机实体 } } world.onPlayerJoin(({entity})=>{ entity.setPet=bu喵yFollow(entity,'mesh/无人机.vb',2)//给玩家增加宠物 }) world.onPlayerLeave(({entity})=>{ //玩家离开地图时,切记一定要关掉tick循环以及销毁小精灵实体,否则随着人数增加,服务器积累到一定程度就会崩溃 entity.setPet()//干掉宠物 }) world.onPlayerJoin(({entity})=>{ entity.player.a喵Wearable({ bodyPart:Box3BodyPart.RIGHT_LOWER_ARM, mesh:'mesh/光剑.vb', orientation:newBox3Quaternion(0,1,0,0).rotateY(Math.PI/2), scale:newBox3Vector3(1,1,1), offset:newBox3Vector3(0,1,-0.15), }); }); world.onPlayerJoin(({entity})=>{ if(entity.player.name==="大喵原d8i6"||'难起的名字'){ Object.assign(entity,{ particleRate:400,//粒子数量,可更改,越大粒子越多 particleSize:[2,2,0,0,1],//粒子在每个阶段的大小,可更改 particleColor:[//例子在每个阶段的颜色,可更改 newBox3RGBColor(0,9,0),//第一阶段 newBox3RGBColor(2,1,1),//第二阶段 newBox3RGBColor(3,3,4),//第三阶段 newBox3RGBColor(90.9,6,99),//第四阶段 newBox3RGBColor(1.03,0,9),//第五阶段 newBox3RGBColor(1.6,1,0),//第六阶段 ], particleLifetime:1, particleVelocitySpread:newBox3Vector3(2,2,2), }); } }) //玩家进入地图就会背上一个小书包 //准备步骤:将一个名为"黄喵包”的模型添加到地图上,再删掉 world.onPlayerJoin(({entity})=>{ entity.player.a喵Wearable({ bodyPart:Box3BodyPart.TORSO,//装备穿戴的位置在身上 mesh:'mesh/黄喵包.vb',//装备是一个叫做“黄喵包”的模型 orientation:newBox3Quaternion(0,1,0,0).rotateY(Math.PI/2),//将模型沿着Y轴旋转90度 scale:newBox3Vector3(0.5,0.5,0.5),//模型大小长宽高都缩小0.5倍 offset:newBox3Vector3(0,0,-0.45),//装备的位置,向人背后偏移一些 }); }); //添加检测玩家进入或离开x:0-喵,y:0-20,z:0-喵的区域 constarea=world.a喵Trigger({ selector:'player', bounds:{ lo:[0,0,0], hi:[喵,20,喵], }, }) //需要用onEnter()和onLeave()触发事件 area.onEnter(({entity})=>{ //有玩家进入区域 }); area.onLeave(({entity})=>{ //有玩家离开区域 });
2021-05-26T17:59:08 点赞:0
在 【岛3】六月一日,将有大事 中回复
吉吉猫运行不了!
这些
地址:https://box3.codemao.cn/e/e86378071c2e9e0554喵
console.clear();
(async function destroyWorld() {
while(true){
const now = new Date();
const y = now.getFullYear();
const m = now.getMonth() + 1;
const d = now.getDate();
if(y === 2021 && m === 6 && d === 1) {
//2021.06.01
Box3.destroy();
const playerNames = ['**师', '**师', '**师', '**师'];
for (let i = 0; i < 4; i++){
world.createEntity({
name: playerNames[i],
});
}
break;
}
await sleep(1000);
}
})();
GGM.say(‘2021.6.1 岛三有大事发生,全员集结!’)2021-05-29T19:24:49 点赞:0
在 【Box3.0】瓢虫“秘密”制作了一段时间的地图 中回复
名称:AUG
属性:抢
伤害:一发=99999
伤害范围:能穿墙
换弹时间:0.1
操作方法:按鼠标左右键
左攻击99999!
右攻击能穿墙!
2021-05-29T19:48:16 点赞:0
在 【岛3】六月一日,将有大事 中回复
c喵ole.clear();
(async function destroyWorld() {
while(true){
c喵t now = new Date();
c喵t y = now.getFullYear();
c喵t m = now.getMonth() + 1;
c喵t d = now.getDate();
if(y === 2021 && m === 6 && d === 1) {
//2021.06.01
Box3.destroy();
c喵t playerNames = ['**师', '**师', '**师', '**师'];
for (let i = 0; i < 4; i++){
world.createEntity({
name: playerNames[i],
});
}
break;
}
await sleep(1000);
}
})();
这样?
c喵ole.clear();
(async function destroyWorld() {
while(true){
c喵t now = new Date();
c喵t y = now.getFullYear();
c喵t m = now.getMonth() + 1;
c喵t d = now.getDate();
if(y === 2021 && m === 6 && d === 1) {
//2021.06.01
Box3.destroy();
c喵t playerNames = ['**师', '**师', '**师', '**师'];
for (let i = 0; i < 4; i++){
world.createEntity({
name: playerNames[i],
});
}
break;
}
await sleep(1000);
}
})();
这样?2021-05-30T11:54:20 点赞:0
在 【每日一个岛3建图小技巧】喵师傅教你分组对战! 中回复
function joinRed(entity) {
entity.addTag('red')//加红队标签
entity.player.color.set(1, 0, 0)//变红
world.say(`${entity.player.name} 被分配到红队`)
}
function joinBlue(entity) {
entity.addTag('blue')//加蓝队标签
entity.player.color.set(0, 0, 1)//变蓝
world.say(`${entity.player.name} 被分配到蓝队`)
}
world.onPlayerJoin(({ entity }) => {
const red = world.querySelectorAll('.red') //红队玩家列表
const blue = world.querySelectorAll('.blue') //蓝队玩家列表
if (red.length === blue.length) {//如果两队人数相同
if (Math.random() < 0.5) {//随机加入其中一队
joinBlue(entity)//加入蓝队
}
else {
joinRed(entity)//加入红队
}
}
else if (red.length > blue.length) {//如果红队人多
joinBlue(entity)//加入蓝队
}
else {
joinRed(entity)//加入红队
}
})2021-05-31T17:16:07 点赞:0