接着我们让holo动起来,为了简单起见,就先让E2绕圆心转动吧
下面的内容主要都是讲解E2了,你也可以在本楼最下面直接复制E2代码
————
首先将E2改成这样:
@name Test
@inputs Base:entity
@outputs@persist Pos:vector Ang:angle Radius Yaw #定义全局变量,Pos类型为三维向量,Ang为角度,Radius和Yaw为数字
@Triggerinterval(50) #E2每50毫秒更新一次,必须让E2一直更新才能实现移动,如果想运动得快一点,可以调低数值,最低10
if(first())
{
Pos=vec(-6.981, 35.17, 21.47) #Pos和Ang已经定义成全局变量了,所以这里只是给他们初始化
Ang=ang(0)
Radius=30 #初始化变量,把圆周运动的半径设置成30起源单位
holoCreate(1)
holoPos(1, Base:toWorld(Pos))
holoAng(1, Base:toWorld(Ang))
holoParent(1, Base)
}
Yaw++ #让Yaw变量一直自加1,相当于自变量,自变量变了因变量才会跟着变
if(Yaw>=360)
{
Yaw=0 #因为E2中三角函数用的单位是°,所以当Yaw大于等于360°就变回0,相当于走完一个周期
}
MoveAng = ang(0, Yaw, 0) #holo转动的角度,只要转动偏航角就行
MovePos = vec(Radius * sin(Yaw), Radius * cos(Yaw), 0) #holo运动的坐标,X轴是Radius * sin(Yaw),Y轴是Radius * cos(Yaw),Z轴为0,初中数学
holoPos(1, Base:toWorld(Pos + MovePos)) #最终给holo设置的坐标就是初始坐标 + 运动坐标
holoAng(1, Base:toWorld(Ang + MoveAng)) #角度同理

效果:

holo转动的角度反了啊...再改改
————
改动:
26行MoveAng = ang(0, Yaw, 0),在Yaw前面加一个负号,变成MoveAng = ang(0, -Yaw, 0)

————
最终效果:

E2代码:
@name Test
@inputs Base:entity
@outputs
@persist Pos:vector Ang:angle Radius Yaw
@trigger
interval(50)
if(first())
{
Pos=vec(-6.981, 35.17, 21.47)
Ang=ang(0)
Radius=30
holoCreate(1)
holoPos(1, Base:toWorld(Pos))
holoAng(1, Base:toWorld(Ang))
holoParent(1, Base)
}
Yaw++
if(Yaw>=360)
{
Yaw=0
}
MoveAng = ang(0, -Yaw, 0)
MovePos = vec(Radius * sin(Yaw), Radius * cos(Yaw), 0)
holoPos(1, Base:toWorld(Pos + MovePos))
holoAng(1, Base:toWorld(Ang + MoveAng))
