用户:
浮生awa查看:10 回复:11 评论:10 创建时间:2022-01-28T18:48:51
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
hello!这里是浮生的第一个教程,请大家多多关照()
今天的主题是:如何让一个实体围绕另一个实体旋转?
下面先讲两个知识点,
一、你得知道什么是
world.querySelector 其实就是搜索一个满足条件的实体world.querySelector('#出生点-1') 比如这行代码,其实就是搜索名字为“出生点-1”的第一个实体。 二、
你还得知道
world.
querySelectorAll
其实和刚刚的那个差不多, 但是
这个是搜索满足条件的所有实体,返回一个数组。
现在开始写代码!
const e1 = world.querySelector('#旋转实体'); 搜索名字为“旋转实体”的实体, 然后赋值给e1 这样我们就获取到这个实体了
world.onTick(async({tick})=>{
const e2 = world.querySelectorAll('player')
})
然后做一个onTick,意思是游戏的每一刻都执行 赋值所有玩家给e2
e2.forEach((e) =>{
})
接着写一个forEach,
意思是用e遍历数组,
对e2数组的每个玩家都执行里面的代码
e1.position.y = e.position.y;
e1.position.x = e.position.x + Math.cos(tick/5)*5
e1.position.z = e.position.z + Math.sin(tick/5)*5
最后把这三行代码加上,
实现旋转的效果
下面会比较难,我讲解一下:
e1是旋转的实体
e是玩家,本来是e2,但是现在我们把它赋值到e了
position是坐标的意思
x=x坐标
y、z也是
第一行是把旋转实体的坐标改为玩家的坐标
也就是把旋转实体的y坐标瞬移到玩家的y坐标,
让他们处在同一高度
接着两行代码的意思
差不多就是在做一个圆
“tick”的意思是每一刻的计数,
每过一刻增加1
tick/5是圆的角度
这两段代码就是让玩家移到圆的tick/5的角度的点上
tick/的次数越多,旋转的速度越慢
具体的有点复杂,
可以参考迷失冷光的三角函数教程学习
链接:https://shequ.codemao.cn/community/411432
那么现在我们就写完了,
完整代码:
const e1 = world.querySelector('#旋转实体');
world.onTick(async({tick})=>{
const e2 = world.querySelectorAll('player')
e2.forEach((e) =>{
e1.position.y = e.position.y;
e1.position.x = e.position.x + Math.cos(tick/5)*5
e1.position.z = e.position.z + Math.sin(tick/5)*5
})
})
记得把第一行的模型名字改为你的实体的名字!
这期教程就到这里了!我们下期再见!