用户:
GZ006查看:8 回复: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里面的地铁了)))