这篇文章主要介绍“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 { //取当前点和后一个点,计算距离,起点指向终点的角度 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行走”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
本文名称:js怎么实现沿线的onframe行走
网页路径:http://bjjierui.cn/article/piggcc.html