跳转到内容

Celestia/Celx 脚本/CELX Lua 方法/CEL 命令 changedistance

来自维基教科书,自由的教科书

changedistance

[编辑 | 编辑源代码]

changedistance { duration <duration> rate <rate> }

在 <duration> 秒内,以指定的 <rate> 改变相机与当前选定物体的距离,以达到特定的 <distance>。

您必须先使用 select 命令选择一个物体。

注意: <distance> 在 CEL changedistance 命令中未指定。

参数

duration <duration>
改变距离所需的时间(秒)。默认值为 1.0 秒。
rate <rate>
改变距离的速度。默认值为 0.0。
小数值效果最佳,从十进制值到 5 或 6。
负值使相机更靠近物体,正值使相机远离物体(“+”号不需要)。


CELX 等效项

基于 observer:gotodistance() 方法。

observer:gotodistance() 方法使用 <distance> 来确定移动到的位置,并且无法定义 <rate>。因此,您必须首先使用 CEL:changedistance 命令在指定的 <rate> 下找出最终的距离,然后将该距离转换为 observer:gotodistance() 方法的 <distance> 参数。

  • 找到名为 <string> 的目标物体,并将其存储在 "objectname" 中。
objectname = celestia:find( <string> )
  • 选择 "objectname" 以等效于 CEL 脚本。
    实际上,在 CELX 脚本中不需要此步骤!
celestia:select(objectname)
  • 获取活动视图的观察者实例,并在 <duration> 秒内移动到 "objectname" 的指定 <distance> 处。
    • <distance> 是从目标中心到停止位置的距离(公里)。
      • 如果没有指定 <distance>,则默认距离 = 20000 公里。
      • 如果 <distance> 小于物体的半径,则移动将在物体内部结束 !!!
      • 要获取物体的半径(公里),可以使用 object:radius() 方法。
    • <duration> 是移动所需的时间(秒)。
      • 如果没有指定 <duration>,则默认时间 = 5.0 秒 !!!
obs = celestia:getobserver()
obs:gotodistance(objectname, <distance>, <duration> )
  • 等待 <duration> 秒。
wait( <duration> )

总结

objectname = celestia:find( <string> )
celestia:select(objectname)
obs = celestia:getobserver()
obs:gotodistance(objectname, <distance>, <duration> )
wait( <duration> )

示例
以下示例选择太阳,移动到太阳,然后选择地球,移动到地球,最后花费 2.5 秒更改显示距离,使其远离地球。

CEL

select { object "Sol" }
goto   { time 3 }
wait   { duration 5 }
select { object "Sol/Earth" }
goto   { time 3 }
wait   { duration 5 }
changedistance { duration 2.5 rate 0.5 }
wait   { duration 2.5 }

CELX

sun = celestia:find("Sol")
celestia:select(sun)
obs = celestia:getobserver()
obs:goto(sun, 3.0)
wait(5.0)
earth = celestia:find("Sol/Earth")
celestia:select(earth)
obs:goto(earth, 3.0)
wait(5.0)
obs:gotodistance(earth, 89048+6378, 2.5)
wait(2.5)

返回 CEL 命令索引

华夏公益教科书