猫史档案馆


【神奇代码岛代码教程】如何做出鸡块旋转的效果

用户:追梦ez追梦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


回复

上一页1 页 / 共 1下一页
追梦ez追梦ez

喵d

点赞0


评论


追梦ez追梦ez

如有Bug请在这条回帖下回复,贴主都会看到o

点赞0


评论


追梦ez追梦ez

喵d

点赞0


评论


望柒望柒

6  

点赞0


评论


追梦ez追梦ez

ddd

点赞0


评论


追梦ez追梦ez

为什么沉下去了555

点赞0


评论


追梦ez追梦ez

ddd啊啊啊、

点赞0


评论


追梦ez追梦ez

ddd啊啊啊啊啊啊啊啊啊啊为什么没人qwq

点赞0


评论


烟魂烟魂

这代码有些想我的不知道是不是那个小鹿透入出去还是某某人看了我和小鹿的一个图把代码借用

点赞0


评论


Aaa求佛yaAaa求佛ya

ddd

点赞0


评论


小文7小文7

???

点赞0


评论


文件是只屑13374101文件是只屑13374101

666,收藏,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(我有一个徒弟叫一只无助的草方块)

点赞0


评论


yyds二营长yyds二营长

ddddd

点赞0


评论


仙之鹤仙之鹤

ddd

点赞0


评论


千星河凉月吖千星河凉月吖

6  

点赞0


评论


追梦ez追梦ez

6.

点赞0


评论


追梦ez追梦ez

可拾取版https://shequ.codemao.cn/community/531205

点赞0


评论