猫史档案馆


代码岛首个(?)功能完整的动画地铁

用户:GZ006GZ006查看:811 回复:18 评论:8 创建时间:2022-02-06T18:41:03


效果:地铁将经过3个站,每到1个站就会开关1次车门,到第3个站后会返程,一直重复下去,不会出现偏移

效果因人而异(划掉)

在食用本代码前,请挖好隧道、摆好模型(如果没有强迫症的话可以不用摆)并设置好名字:

               车尾

车窗-3               车窗-2

车门-1               车门-3

          车顶 车底

车门-2               车门-4

车窗-1               车窗-4

             车头

world.querySelectorAll('.dt').forEach((metro) => {//地铁整体移动代码
    metro.fixed = true//不受外力影响
    metro.collides = true//允许碰撞
    metro.startPos = []
    metro.middlePos = []
    metro.endPos = []

    if (metro.id == '车头') {
        metro.startPos = [243.3, 2.6, 37.5]
        metro.middlePos = [129.0, 2.6, 37.5]
        metro.endPos = [14.7, 2.6, 37.5]
    } else if (metro.id == '车尾') {
        metro.startPos = [250.9, 2.6, 37.5]
        metro.middlePos = [136.6, 2.6, 37.5]
        metro.endPos = [22.3, 2.6, 37.5]
    } else if (metro.id == '车底') {
        metro.startPos = [247.1, 1.0, 37.5]
        metro.middlePos = [132.8, 1.0, 37.5]
        metro.endPos = [18.5, 1.0, 37.5]
    }else if(metro.id == '车顶'){
        metro.startPos = [247.1, 4.1, 37.5]
        metro.middlePos = [132.8, 4.1, 37.5]
        metro.endPos = [18.5, 4.1, 37.5]
    }else if (metro.id == '车窗-1') {
        metro.startPos = [244.7, 2.6, 36.2]
        metro.middlePos = [130.4, 2.6, 36.2]
        metro.endPos = [16.1, 2.6, 36.2]
    }else if (metro.id == '车窗-2') {
        metro.startPos = [249.5, 2.6, 38.8]
        metro.middlePos = [135.2, 2.6, 38.8]
        metro.endPos = [20.9, 2.6, 38.8]
    }else if (metro.id == '车窗-3') {
        metro.startPos = [249.5, 2.6, 36.2]
        metro.middlePos = [135.2, 2.6, 36.2]
        metro.endPos = [20.9, 2.6, 36.2]
    }else if (metro.id == '车窗-4') {
        metro.startPos = [244.7, 2.6, 38.8]
        metro.middlePos = [130.4, 2.6, 38.8]
        metro.endPos = [16.1, 2.6, 38.8]
    }
    metro.ani = metro.animate([
        { position: metro.startPos, duration: 2 },//地铁呆在起点
        { position: metro.startPos, duration: 5 },//地铁开往第2站
        { position: metro.middlePos, duration: 2 },//地铁呆在第2站
        { position: metro.middlePos, duration: 5 },//地铁开往终点
        { position: metro.endPos, duration: 2 },//地铁呆在终点
        { position: metro.endPos, duration: 5 },//地铁开往第2站
        { position: metro.middlePos, duration: 2 },//地铁呆在第2站
        { position: metro.middlePos, duration: 5 },//地铁开往起点

    ], {
        duration: 16 * 67.72/1.5, //播放一个循环共用时67.72秒(11.93*4)+5*4,
        iterations: Infinity,//动画无限次循环播放
        direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
    })
})

world.querySelectorAll('.地铁门').forEach((metro) => {//开关车门动画
    metro.fixed = true//不受外力影响
    metro.collides = true//允许碰撞
    metro.startPos = []
    metro.middlePos = []
    metro.endPos = []
    metro.sp=[]
    metro.mp=[]
    metro.ep=[]
    if (metro.id == '车门-1') {
        metro.startPos = [247.67, 2.6, 36.2]
        metro.middlePos = [133.37, 2.6, 36.2]
        metro.endPos = [19.07, 2.6, 36.2]
        metro.sp = [248.67,2.6,36.2]
        metro.mp = [134.37, 2.6, 36.2]
        metro.ep = [20.07, 2.6, 36.2]
    }else if (metro.id == '车门-2') {
        metro.startPos = [246.63, 2.6, 36.2]
        metro.middlePos = [132.33, 2.6, 36.2]
        metro.endPos = [18.03, 2.6, 36.2]
        metro.sp = [245.63,2.6,36.2]
        metro.mp = [131.33, 2.6, 36.2]
        metro.ep = [17.03, 2.6, 36.2]
    }else if (metro.id == '车门-3') {
        metro.startPos = [247.67, 2.6, 38.8]
        metro.middlePos = [133.37, 2.6, 38.8]
        metro.endPos = [19.07, 2.6, 38.8]
        metro.sp = [248.67,2.6,38.8]
        metro.mp = [134.37, 2.6, 38.8]
        metro.ep = [20.07, 2.6, 38.8]
    }else if (metro.id == '车门-4') {
        metro.startPos = [246.63, 2.6, 38.8]
        metro.middlePos = [132.33, 2.6, 38.8]
        metro.endPos = [18.03, 2.6, 38.8]
        metro.sp = [245.63,2.6,38.8]
        metro.mp = [131.33, 2.6, 38.8]
        metro.ep = [17.03, 2.6, 38.8]
    }

    /*
    metro.sp = metro.startPos; metro.sp[0]++;
    metro.mp = metro.startPos; metro.mp[0]++;
    metro.ep = metro.startPos; metro.ep[0]++;
    world.say('名字叫做:'+ metro.id +'的实体的'+ `初始坐标为:${metro.startPos} 中间坐标为:${metro.middlePos} 终点坐标为:${metro.endPos}`)
    */

    metro.ani = metro.animate([
        { position: metro.startPos, duration: 0.1 },//车门开~
        { position: metro.sp, duration: 1.5 },//车门保持开启~
        { position: metro.sp, duration: 0.45 },//车门关~
        { position: metro.startPos, duration: 5.1 },//跑到第2站
        { position: metro.middlePos, duration: 0.1 },//车门开~
        { position: metro.mp, duration: 1.5 },//车门保持开启~
        { position: metro.mp, duration: 0.45},//车门关~
        { position: metro.middlePos, duration: 5.1 },//跑到终点~
        { position: metro.endPos, duration: 0.1 },//车门开~
        { position: metro.ep, duration: 1.5 },//车门保持开启~
        { position: metro.ep, duration: 0.45 },//车门关~
        { position: metro.endPos, duration: 5.1 },//跑到第2站
        { position: metro.middlePos, duration: 0.1 },//车门开~
        { position: metro.mp, duration: 1.5 },//车门保持开启~
        { position: metro.mp, duration: 0.45 },//车门关~
        { position: metro.middlePos, duration: 5.1 },//跑到起点

    ], {
        duration: 16 * 67.72/1.5, //播放一个循环共用时67.72秒(11.93*4)+5*4,
        iterations: Infinity,//动画无限次循环播放
        direction: Box3AnimationDirection.WRAP,//让动画实体从终点回到起点
    })
})

然后就阔以了~~~

或许我可以换掉Omega里面的地铁了)))


回复

上一页第 1 页 / 共 1 页下一页
GZ006GZ006

沙发拿来吧你

点赞0


评论


GZ006GZ006

注意:这个地铁是沿x轴移动的,需将x:1-253;y:1-5;z:36-38全部挖穿后方可乘坐地铁

点赞0


评论

Star Ring City里的地铁是有很多转弯点的,费了我好长时间才调试好()()


暗影MCanying暗影MCanying

在食用本代码前

?????

点赞0


评论

对)

地铁可以吃,不是吗)

?????疑惑

哈哈笑死我了()


GZ006GZ006

啊

真冷

我感觉我自带冷贴效果

点赞0


评论


GZ006GZ006

啊。。。

点赞0


评论


IaeaIaea

喵喵

点赞0


评论


GZ006GZ006

喵

点赞0


评论


GZ006GZ006

顶一下

点赞0


评论


面具狐狸云绾兮面具狐狸云绾兮

那看看我最新发的那些模型?()

点赞0


评论


一个STUB用户_14302596一个STUB用户_14302596

哇哦,好用,进书签吃灰吧你

点赞0


评论


GZ006GZ006

顶啊

点赞0


评论


小树同学小树同学

好!

点赞0


评论


编码喵编码喵

_name_很早就做过了

点赞0


评论

这个是自动的,我的那个是完全人工操作(


BSS梅者如西BSS梅者如西

喵d

点赞0


评论


名字鬼知道的小号酱名字鬼知道的小号酱

太棒了,是你自己编的么?不是抄的吧?

点赞0


评论

是自己编的)Omega的一号线我是搬了尹子的代码+自己的部分代码)


GZ006GZ006

啊啊

点赞0


评论


未名用户未名用户

,,

点赞0


评论


隐姓埋名的sui隐姓埋名的sui

@广东006 不行啊 没动静

点赞0


评论

https://box3.codemao.cn/e/a54f282b8008b212135d