这篇文章主要介绍“js怎么实现沿线的onframe行走”,在日常操作中,相信很多人在js怎么实现沿线的onframe行走问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js怎么实现沿线的onframe行走”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联主营桦川网站建设的网络公司,主营网站建设方案,重庆APP软件开发,桦川h5成都小程序开发搭建,桦川网站营销推广欢迎桦川等地区企业咨询
下边列举一个在实际中的应用,如何沿着一条做好的线,在线上动态的移动一个模型文件。
以下是具体的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<linePointCount-1)
{
//取当前点和后一个点,计算距离,起点指向终点的角度
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<distance)
{
//设置模型的位置
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行走”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
网站名称:js怎么实现沿线的onframe行走
分享URL:https://www.cdcxhl.com/article22/piggcc.html
成都网站建设公司_创新互联,为您提供微信公众号、网站制作、品牌网站制作、响应式网站、网站建设、软件开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联