スクリプトの構造
スクリプトの中のシーケンス(実行)の流れ
スクリプトに記述されたコマンドは、上の行から順番に、1行ずつ実行されていきます。ある行でムービーやサウンドの再生が実行されたときでも、それらの終了を待たずに、すぐ次の行へシーケンスが移動し、その行のコマンドが実行されます。
モーションの場合も同様で、モーション中にも次から次の行へとシーケンスが移動していきます。シーケンスの流れを制御するには、『Sleep』コマンドや『WaitFor』コマンドを使って、一時停止させることができるだけです。
コメント行
行頭が『#』記号で始まる行は、「コメント行」として扱われ、行中にステラトークコマンドが記述されていても無視されます。
スクリプトをあとで編集・修正するときに、どんな設定をしたかわかりやすいように、スクリプトの中にコメント行で覚え書きを挿入しておくと便利です。カットよりも細かい覚え書きを書き込むのに使います。後述の『■スクリプトのサンプル』で紹介するスクリプトでも、どんな設定をしたのかを説明するために、コメント行が挿入されています。
コメント行の書式は次のとおりです。
# コメント行
星図描き替えのタイミング
ステラトークで星図を描き替える仕組みは次のとおりです。
- あらかじめ「プロパティ」と呼ばれる星図の表示条件を設定しておきます。
- 星図描き替えのコマンドを実行します。
星図の書き換えは、プロパティの変更時ではなく、星図描き替えコマンドの実行時に行われます。スクリプトでは、この手順の繰り返しで、星図を次々と更新し、場面切り替えをします。
プロパティをスクリプトに記述してから、それが星図に反映(描き替え)されるタイミングは、次のとおりです。
- 『Show Sky』コマンドが実行されたとき
- 『Play Sky』コマンドが実行されたとき
- 『FadeIn Sky』コマンドが実行されたとき
- モーション中は即座に反映される
※モーション中は、常に星図が描画更新されているため、スクリプトのモーション実行の行から停止の行までの間に、プロパティを設定した行にシーケンスが移動すると、即座に星図に反映されます。
複数のプロパティを設定してから、一度に表示するには
星座名と星座絵を同時に表示したいときや、あるいは複数の星座などを同時に表示したいときは、必要なプロパティを連続してスクリプトに記述し、その後で『FadeIn Sky』コマンドなどで星図に表示させます。
星図中心とこと座を表示可能にしてから星図を描画する場合の書式
# 星図の中央をこと座に設定する
View.Center = Constellation.Lyr
# こと座の星座絵・星座線・星座名を表示可能に設定する
Constellation.Lyr.Picture.Visible = True
Constellation.Lyr.Line.Visible = True
Constellation.Lyr.Name.Visible = True
# ここまでの条件で、星図を表示する
FadeIn Stellar,2sec
ムービーやナレーションが終わってから次へ進むには
ムービーやナレーション、またはモーションが終了してから、次のスクリプトへ進むよう「待ち時間」を作りたい場合は、『WaitFor』コマンドを使います。『WaitFor』コマンドに設定した条件になるまで、シーケンスを停止し、スクリプトの次の行に移動しません。
『WaitFor』コマンドコマンドの使い方の例は、次のとおりです。
ムービー終了まで待つ場合の書式
Play Movie(#1, sample.mpg)
WaitFor (Movie.#1.Stop)
サウンド終了まで待つ場合の書式
Play Sound(#1, sample.wav)
WaitFor (Sound.#1.Stop)
モーション終了まで待つ場合の書式※
Motion.Time = True
Motion.Time.Realtime = False
Motion.Time.Speed.Stop = False
Motion.Time.Speed = 10000 # 実時間の10000 倍の速度
Motion.Time.Goal = JST(2003,12,31,0,0,0)
# モーションの開始
Play Stellar
WaitFor (Motion.Stop)
Motion.Time = False
※『Motion.Goal』プロパティで、モーションの終点が設定されている場合のみモーションが自動停止します。WaitFor (Motion.Stop) コマンドはモーションが自動停止するまでシーケンスを停止します。
タイマーでタイミングを合わせるには
ナレーションやモーションが始まってから何秒後に星座を表示したい、などのタイミングをあわせるには、Sleep コマンドのほかに、タイマーを使う方法があります。最初にタイマーをリセットしてから、ナレーションやモーションを開始し、タイマーの指定秒数まで待つ時間を作ってから、任意のコマンドを実行させます。
タイマーの書式は次のとおりです。
サウンド開始から5 秒後と10 秒後にコマンドを実行する場合の書式
Timer.#1 = 0
Play Sound(#1, sample.wav)
WaitFor (Timer.#1 == 5sec)
# ... コマンド1
WaitFor (Timer.#1 == 10sec)
# ... コマンド2
条件分岐で処理を切り替えるには
特定の天体が星図の中に見えているか、高度が一定を越えているか、などで条件分岐して、それぞれ異なるスクリプトを実行させることができます。条件分岐の書式は次のとおりです。
条件分岐で、星図に金星が見えているか判断し、見えていればスクリプト1を実行、見えなければスクリプト2を実行する場合の書式
if (Solar.Planet.Venus.OnScreen)
# ... スクリプト1
else
# ... スクリプト2
end if
プロパティを設定する行では、『=』の前後に必ず半角のスペースを挿入してください。英文字の大文字と小文字は同一と見なされます。