用户:
追梦ez查看:7 回复:17 评论:7 创建时间:2023-03-09T22:15:16
嗨害嗨,我叕来出教程力)))
虽然距离上次已经两月半力)(小声)
这期满满的干货)话不多说,直接开始
1.创建鸡块实体
const e = world.createEntity({//创建一个实体
mesh: 'mesh/只因块.vb',//实体样的样子,地图文件中要有‘只因块’这个模型,当然名字可以自己改
collides: 0, //鸡块是否参与碰撞,这里为不参与,如果要有碰撞的话要把0改为1
position: [喵,8+1,喵],//鸡块的位置
});
2.上下动画
//以下的e表示上面的鸡块实体,如要改动,请注意
const startPos = [e.position.x, e.position.y + 0.3, e.position.z]//摆动的起点(鸡块最高点)
const endPos = [e.position.x, e.position.y, e.position.z]//摆动终点(鸡块最低点)
const ani = e.animate([
{ position: startPos, duration: 1 },
{ position: endPos, duration: 1 },
], {
duration: 16 * 2,
iterations: 1,//动画只播放1次
direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
ani.play({
duration: 16 * 2, //播放一个循环共用时2秒(每秒16帧),
iterations: Infinity,//动画无限次循环播放
direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
})
3.让鸡块旋转
setInterval(() => {//设置循环定时
e.meshOrientation.copy(e.meshOrientation.rotateY(Math.PI / 180))//调整鸡块角度
}, 7)//越小越快
4.优化组合
var velocity=7//旋转速度变量,越小转得越快
var velocity2=16//上下速度变量,越小越快
function spawn(x,y,z) {//x,y,z分别为鸡块的x坐标y坐标z坐标
const e = world.createEntity({
mesh: 'mesh/只因块.vb',
collides: true,
friction: 0,
scale: new Box3Vector3(2, 2, 2),
position: [x,y+1,z],
});
setInterval(() => {
e.meshOrientation.copy(e.meshOrientation.rotateY(Math.PI / 180))
}, velocity)
const startPos = [e.position.x, e.position.y + 0.3, e.position.z]
const endPos = [e.position.x, e.position.y, e.position.z]
const ani = e.animate([
{ position: startPos, duration: 1 },
{ position: endPos, duration: 1 },
], {
duration: velocity2 * 2,
iterations: 1,
direction: Box3AnimationDirection.WRAP,
})
ani.play({
duration: velocity2 * 2,
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
})
}
5.调用函数
spawn(喵/*x坐标*/,8/*y坐标*/,喵/*z坐标*/)//调用函数
这样就大功告成了!以下是完整代码:
var velocity=7//旋转速度变量,越小转得越快
var velocity2=16//上下速度变量,越小越快
function spawn(x,y,z) {//x,y,z分别为鸡块的x坐标y坐标z坐标
const e = world.createEntity({
mesh: 'mesh/只因块.vb',
collides: true,
friction: 0,
scale: new Box3Vector3(2, 2, 2),
position: [x,y+1,z],
});
setInterval(() => {
e.meshOrientation.copy(e.meshOrientation.rotateY(Math.PI / 180))
}, velocity)
const startPos = [e.position.x, e.position.y + 0.3, e.position.z]
const endPos = [e.position.x, e.position.y, e.position.z]
const ani = e.animate([
{ position: startPos, duration: 1 },
{ position: endPos, duration: 1 },
], {
duration: velocity2 * 2,
iterations: 1,
direction: Box3AnimationDirection.WRAP,
})
ani.play({
duration: velocity2 * 2,
iterations: Infinity,
direction: Box3AnimationDirection.WRAP,
})
}
spawn(喵/*x坐标*/,8/*y坐标*/,喵/*z坐标*/)//调用函数
本期教程结束了,如果对你有帮助的话就ddd
注:作者制作不易,copy请通知或标明出处o