const int LABEL_AIRPLANE[4]; LABEL_AIRPLANE[0]=1機目のラベル; LABEL_AIRPLANE[1]=2機目のラベル; LABEL_AIRPLANE[2]=3機目のラベル; LABEL_AIRPLANE[3]=4機目のラベル; // 離陸時の動作を制御するスレッド function ctrl_takeoff(int label) { int i; set_speed(label, 離陸速度); wait_time(滑走路滑走時間); set_pad(label, 緩やかにピッチアップ1); wait_time(ピッチアップ時間1); gear_up_animation(label); wait_time(ギア格納時間); set_pad(label, 緩やかにピッチアップ2); wait_time(ピッチアップ時間2); wait_time(そのまま上昇する時間); set_pad(label, 半ロール); wait_time(半ロール時間); for(i=0;i<水平右旋回に使うフレーム数;i++){ system(); rel_rot(1フレームごとちょっとずつ水平右旋回させる); } exit(); } // 編隊を維持するスレッド function ctrl_takeoff_teammates(int arg) { while(1){ system(); set_rel_pos_xyz_abs(2番機を、1番機を中心に左翼配置); set_rel_pos_xyz_abs(3番機を、1番機を中心に右翼配置); set_rel_pos_xyz_abs(4番機を、1番機を中心に尾翼配置); } } // 離陸イベント function event_takeoff(void) { int i, thread_id_ctrl_takeoff_teammates; create_thread(ctrl_takeoff, 1番機のラベル); thread_id_ctrl_takeoff_teammates = create_thread(ctrl_takeoff_teammates, 0); (このあと離陸させながらやらせたい処理を書く・メッセージ表示など) exit(thread_id_ctrl_takeoff_teammates); // 編隊維持スレッド終了 }