Lv.1
我是STUB用户啊...欢迎加入stub工作室!
签名:努力编程,修bug中…… 但更多的时间还是上岛 JUU1JTkyJTk1JUU1JTkyJTk1JUU1JTkyJTk1
在 【每日一个岛3建图小技巧】拥有一个跟随的皮卡丘?就决定是你啦! 中回复
交作业
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.3;//追随的灵敏度, 最好设在0.5左右, 1.0表示立即移到玩家位置
const dist = 0; //与玩家保持的距离
const distY = 3;//与地面距离的高度
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 + distY;
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', -1); //给玩家增加宠物
});
world.onPlayerLeave(({ entity }) => {
//玩家离开地图时, 切记一定要关掉tick循环以及销毁小精灵实体, 否则随着人数增加, 服务器积累到一定程度就会崩溃
entity.setPet(); //干掉宠物
});2021-05-22T19:24:32 点赞:1
在 吉吉喵!有一个盗 号者!他盗我号! 中回复
名字相似是常见的事情,你可以提醒他们,但如果他们说你是假的可以找吉吉喵求助
其实没什么大不了的,除非他们故意违规
2021-06-10T18:59:09 点赞:1
在 有没有会这种代码的? 中回复
//需要给所有的武器模型添加标签:武器
world.onEntityContact(({entity,other})=>{
if(!entity.isPlayer && other.isPlayer && entity.hasTag('武器')){
other.player.a喵Wearable({
bodyPart:Box3BodyPart.RIGHT_HAND,
mesh:entity.mesh
});
entity.destroy();
}
});2021-06-24T14:46:07 点赞:0
在 【JS】怎样让一个模型(实体)掉落到地图的随机位置? 中回复
entity.position.set(Math.random()*128,64,Math.random()*128);
//如果是超大图可以把128改为256,如果y坐标也随机就把64改为Math.random()*642021-06-29T12:21:25 点赞:0