千家信息网

js怎么实现沿线的onframe行走

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"js怎么实现沿线的onframe行走",在日常操作中,相信很多人在js怎么实现沿线的onframe行走问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"j
千家信息网最后更新 2025年01月23日js怎么实现沿线的onframe行走

这篇文章主要介绍"js怎么实现沿线的onframe行走",在日常操作中,相信很多人在js怎么实现沿线的onframe行走问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"js怎么实现沿线的onframe行走"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

下边列举一个在实际中的应用,如何沿着一条做好的线,在线上动态的移动一个模型文件。

以下是具体的js代码:

//一个通用函数,如何把te中geometry的点类型,转换成position位置

function pointToPostion(point,altitudeType)

{

var postionl=SGWorld.Creator.CreatePosition(point.X,point.Y,point.Z,altitudeType,0,0,0,0);

return postionl;

}

//定义行走的模型,时间等参数

var model = null;

var time;

var linePointCount=0;

var i;

var altitudeType;

var linePoint;

function Init()

{

i=0;

//找到事先画好的线对象

var item = SGWorld.ProjectTree.FindItem("线\\路径");

var poly = SGWorld.ProjectTree.GetObject(item);

//获得线对象的geometry和高度类型,线中包含的点

var polygonGeometry = poly.Geometry;

altitudeType=poly.Position.AltitudeType;

linePoint= polygonGeometry.Points;

linePointCount=polygonGeometry.Points.Count;

var fpos=pointToPostion(linePoint.Item(i),altitudeType);

//初始化时间和onframe事件

time = new Date();

SGWorld.AttachEvent("onFrame", onFrame); //新建一个行走的模型

model = SGWorld.Creator.CreateModel(fpos, "D:\\skylinedata\\小人.xpl", 3);

}

//onframe时间实现,这是代码的关键

function onFrame()

{

//按照线中的点进行行走,从第一个点到最后一个,当大于点数,路径走 完

if(i

{

//取当前点和后一个点,计算距离,起点指向终点的角度

var fpos=pointToPostion(linePoint.Item(i),altitudeType);

var spos=pointToPostion(linePoint.Item(i+1),altitudeType);

var distance=fpos.DistanceTo(spos);

var aimTo=fpos.AimTo(spos);

//计算onframe执行一次的时间,对象行走的距离

var distToMove = (30 * 1000 / 3600) * (new Date().getTime() - time.getTime()) / 1000;

//计算当前距离是否超高当前线段距离,如超过则切换线中下一个点

var nowDis=fpos.DistanceTo(model.Position);

if(nowDis

{

//设置模型的位置

model.Position = model.Position.Move(distToMove, aimTo.Yaw, aimTo.Pitch);

model.Position.Pitch=0;

}

else

{

//切换下一个点

model.Position = spos;

i++;

}

time = new Date();

}

else

{

SGWorld.DetachEvent("onFrame", onFrame);

}

}

到此,关于"js怎么实现沿线的onframe行走"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0