
Lv.1
如果需要墨水帮忙,请带一瓶橄榄汁……谢谢配合
签名:摸鱼
在 【代码岛3.0】忽然曝光的年兽随机移动代码 中回复
上线解读!
const lions = world.querySelectorAll('#狮子-1');//小年兽的模型名称叫做'狮子-1'
lions[0].collides = true; // 开启碰撞
lions[0].gravity = true; // 开启重力
lions[0].friction = 0; // 关闭摩擦力
// 创建一堆相同的实体并push到lions中
for (let i = 0; i < 20; i++) {//重复执行20次
const e = world.createEntity(lions[0]);//创建小年兽(克隆体)
e.position.y += Math.random() * 50; //传送到需要的位置 随机y轴高度, 防止弹飞
lions.push(e);
}
// onTick中处理实体的运动
world.onTick(() => {
// 处理每个实体
lions.forEach((e) => {
// 计算X和Z轴方向的速度的和 创建一个叫sdxz(速度旋转)的恒变量
const sdxz = Math.abs(e.velocity.x) + Math.abs(e.velocity.z);//sdxz的值是实体的运动……运动……运动啥?
if (sdxz > 0.1) {
// sdxz大于一, 判定为运动中
// 计算当前方向
const angle = Math.floor(Math.atan2(e.velocity.z, e.velocity.x) / (2. * Math.PI) * 256) * 2. * Math.PI / 256;//创建一个叫angle(角度)的恒变量,他的值为……呃……为这个算法
// 设置朝向, 如果朝向不对, 可自行在后面添加相应的rotateX/rotateY/rotateZ
const orientation = new Box3Quaternion(0, 0, 0, 1).rotateY(angle).rotateY(Math.PI);//创建一个叫orientation的恒变量,值由他的面向决定,面向又由angle搭配#¥%&……算法决定
e.meshOrientation.copy(orientation);//实体的面向就从上面的恒变量copy过来
} else {//不然就……
// 随机角度
const randTheta = Math.random() * Math.PI * 2;//Math.random()就是所谓的随机,用法是 最低数值+Math.random*最高值
// 随机速度大小
const mag = Math.random() + Math.random();
// 设置速度
e.velocity.x = mag * Math.sin(randTheta);
e.velocity.z = mag * Math.cos(randTheta);
// 跳一下
if (e.velocity.y < 1) {//当实体的y轴加速度小于1
e.velocity.y += 0.5;//实体的y轴就加速度0.5
}//万能框架
}//万能框架
});//万能框架
});//万能框架2020-08-06T09:57:08 点赞:0