Celestia/Celx 脚本/CELX Lua 方法/CEL 命令 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 秒 !!!
- <distance> 是从目标中心到停止位置的距离(公里)。
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)