针对于标签或者模型,在skyline上可以进行移动。可以让一个模型可以像无人机似的飞行,或者描述从一个点到另一个点的飞行轨迹。
话不多说,直接上干货。
第一步 添加标签
参考网址:
第二步 设置属性
function createLable(){ var label = sgworld.Creator.CreateLabel(labelPos, "北京科技有限公司.\r\n西安办事处\r\n", cLabelPath2, cLabelStyle, sgworld.ProjectTree.FindItem("新建组 ##575097"), "grey_bubble"); //在生成lable对象后,需要设置一个属性,即 lable.Attachment.AutoDetach = false;}
对于动态对象,AutoDetach设置为默认值 false。一旦摄像机到达动态对象,它会继续按照对象的移动状态来跟踪对象。但是,如果 AutoDetach 设置为 true,一旦摄像机到达对象时,它将停止。如果客户端不断更新对象的位置(例如,作为一个 GPS 更新),它应设置此值(在创建对象的时候)为 false。这样,如果用户飞往这个对象,它后面的摄像机继续。
可理解为如果设置为false,那么当标签进行移动的时候,摄像机的位置会跟随着移动,当停止到某一点的时候,摄像机停止,标签再次移动的时候,摄像机依然随之移动。
如果设置为true,那么当标签进行移动的时候,摄像机的位置会跟随着移动,当停止到某一点的时候,摄像机停止,标签再次移动的时候,摄像机不再随之移动。
第三步 添加监听
//在每一帧渲染前都会触发该方法sgworld.AttachEvent("OnFrame", OnFrame);
OnFrame事件详解参考
第四步 添加移动方法
1、Lerp
一个坐标以一定比例朝着另一个坐标移动
function OnFrame() { if(lable != null) { //默认飞到某一个位置 var Washington = sgworld.Creator.CreatePosition( 116.3912630081, 39.9074812817, 1000, 0, 0.0, // 偏航角 -43.0); // 俯仰角 lable.Position = lable.Position.Lerp(Washington, 1); }}
Lerp( Position, //需要新建一个位置坐标,或者从某个地方读取到的位置坐标 Percentage //移动的比例)
2、Move
将标签的坐标移动一段距离
function OnFrame(){ if(lable != null){ lable.Position = lable.Position.Move(100, -90, 45); }}
Move( Distance, //移动的距离。 Yaw, //移动坐标的方向。0=北,90=东,180=南,-90=西,-180=南 Pitch //移动坐标的俯仰角。0=水平,1~90=向上飞行,-90~-1=向下飞行)
3、MoveToward
移动坐标走向另一个坐标指定的距离
function OnFrame() { if(lable != null) { //默认飞到某一个位置 var Washington = sgworld.Creator.CreatePosition( 116.3912630081, 39.9074812817, 1000, 0, 0.0, // 偏航角 -43.0); // 俯仰角 lable.Position = lable.Position.MoveToward(Washington, 1); }}
MoveToward( Position, //一个位置坐标,表示坐标朝着已选定的坐标移动 Distance //移动的距离)
以上就是关于标签或模型的移动的内容。
下面附上完整代码可参考
俯仰角: