Urho3Dエディター(パート1)

Urho3Dエンジンを引き続き扱います。 今回はエディターに立ち寄りたいです。 使い方は非常に簡単ですが、いくつかの点は明確に説明する必要があり、公式ドキュメントではそれらを明らかにしていません。 さて、同時に小さなおもちゃを書きます。 始めましょう。







エディターもゲームです。



エディターは、 前回使用したランチャーによって起動されたAngelScriptスクリプトです。 そのため、そのコードは他の例とともに調査でき、必要に応じて簡単に変更できます。 バッチファイルBuild / bin / Editor.batを使用してエディターを起動できます。



ナビゲーションは、シューティングゲームの制御に似ています。 WおよびS-前後に移動、AおよびD-左右に移動、QおよびE-上下に移動。 固定シフトはより速く動きます。 矢印を使用できます。 マウスの右ボタンを押したままにすると、カメラをさまざまな方向に回転させることができます。 中央のボタンを固定すると、選択したオブジェクトを中心に回転します。 ホイールを回すと、視野角(fov)が変わります。 ここでキーの完全なリストを見つけることができます



設定



表示->エディター設定-設定を表示および制御します。 Blenderのファンには、別のキーボードレイアウトを選択する機会があります。 注意が必要なオプションは、新しいノードモードです。 距離モードの使用はデフォルトで有効になっています。 このモードでは、[新しいノードの距離]列で指定した距離で、画面の中央に新しいノードが作成されます。 私にとっては、これはあまり便利ではありません。 私は2番目のモードがずっと好きです-中央に。 このモードでは、新しいノードが座標の中心に作成され、そこから目的の位置に移動できます。 3番目のモード(レイキャスト)は最初のモードに似ていますが、固定距離が使用されるだけでなく、シーンとの交差点が検索されます。



「表示」->「エディター設定」-インターフェース設定。 ここで興味深いのは、言語(ロシア語を含む)を選択し、インターフェイスの透明度を設定する機能です。 最小不透明度-ビューを移動するときの透明度、最大不透明度-残りの時間。 気が散るので、通常は両方の値を1に設定します。 注:新しい値を適用するには、入力後にEnterキーを押します。



すべての設定は、ファイルc:\ Users \ USERNAME \ AppData \ Roaming \ urho3d \ Editor \ Config.xml(Windows)に保存されます。 設定をリセットするには、このファイルを削除します。



コンソール



F1を押すと、コンソールが開きます。 入力フィールドの左側にあるボタンを使用して切り替える2つのモードで動作します。



FileSystemモードでは、コンソールは通常のWindowsコマンドラインのように動作します(もちろんWindowsを使用している場合)。 たとえば、「notepad.exe」と入力すると、メモ帳が開きます。



スクリプトモードでは、入力されたすべてのコマンドはAngelScriptインタープリターによって実行されます。 たとえば、コマンド「log.Write(1 + 2)」は3を出力します。ここで、コンソール出力はログであるという結論に達します。 ログ自体はテキスト形式でファイルc:\ Users \ USERNAME \ AppData \ Roaming \ urho3d \ logs \ Editor.as.logに書き込まれます。 スクリプトをデバッグするときに役立ちます。



最初のステップ



github.com/1vanK/Urho3DHabrahabr02リポジトリからUrho3DHabrahabr02Start.zipアーカイブを取り出して空のフォルダーに解凍します(このパスは「d:\ MyGames \ Urho3DHabrahabr02 \ Urho3DHabrahabr02 \」なので、わかりやすくするために使用します)。 このアーカイブには、ゲームを作成するときに必要なリソースが含まれています:複数のモデル、それらの素材、1つのサウンドファイル。



エディターで、[ファイル]-> [リソースパスの設定...]をクリックし、パス「d:\ MyGames \ Urho3DHabrahabr02 \ Urho3DHabrahabr02 \ GameData \」を指定します。 これで、エディターはリソースを持つ3つのフォルダーにアクセスできるようになりました。その隣にある独自のDataフォルダーとCoreDataフォルダー、および指定したGameDataフォルダーです。



シーンを作成する



リソースブラウザで、Modelsフォルダを選択し、Ground.mdlを[階層]ウィンドウのシーンルートノードにドラッグします。







この場合、StaticModelコンポーネント(スケルトンのない単純なモデル)を持つ新しいノードが自動的に作成されます。 [属性インスペクター]ウィンドウで、ノード名を[グラウンド]に設定し、[マテリアル]列の横にある[選択]ボタンをクリックして、[マテリアル/Ground.xml]を選択します。







これで床ができましたが、シーンの照明が十分でないため、光源を追加しましょう。



まず、新しいノードを作成します。 シーンルートノードを選択し、メニュー項目[作成]-> [ローカルノード]を選択します。 レプリケートされたノードを作成することもできます。 私たちの場合、複製されたノードはネットワークとの対話中に同期されるため、違いはありません。また、ネットワークを操作する予定はありません。 ノードは、メニューからではなく、エディターの左側にある垂直パネルを使用して作成することもできます。



新しく作成されたノードが選択されていることを確認し、メニュー項目[作成]-> [コンポーネント]-> [シーン]-> [ライト]を選択します(左の垂直パネルに多くのコンポーネントが複製されます)。 (属性インスペクター)ウィンドウで、ノードの名前を指定し、ソースの方向(日光)のタイプを選択し、明るさ、回転、位置を指定します(このタイプの光源の場合、位置は重要ではありませんが、シーンを妨げないようにノードを上に上げます)。 また、「影を落とす」オプションをオンにして、光源が影を作成できるようにします。







次に、背景の照明を変更します。 シーンルートノードを選択し、ゾーンコンポーネントを作成します(作成->コンポーネント->シーン->ゾーン)。 背景色(フォグカラー)と背景色(アンビエントカラー)を設定します。 これらの値は、カメラがゾーン内にある場合にのみ使用されるため、境界を拡張します(境界ボックスの最小/最大)。







スクリプト



新しいノードを作成し、AnimatedModelコンポーネント(スケルトン付きモデル)を追加して、Models / Cannon.mdlモデルとMaterials / Cannon.xmlマテリアルを指定します。 銃を少し上に動かし、「影を落とす」オプションをオンにして、銃が影を落とすようにします。







銃に表示される子ノードは、モデルに埋め込まれたボーンです。 今のところ、それらを無視します。



GameData \ Scriptsフォルダーで、次の内容のCannon.asファイルを作成します。



class Cannon : ScriptObject { //      . int direction = 1; //    . void Update(float timeStep) { //     x (node   ,    ). float pitch = node.rotation.pitch; //   ,       . if (pitch >= 70.0f) direction = -1; else if (pitch <= -10.0f) direction = 1; pitch += 30.0f * direction * timeStep; node.rotation = Quaternion(pitch, 0.0f, 0.0f); } }
      
      





スクリプトはUTF-8エンコーディングで保存するのが最適であり、キリル文字に問題はありません。



ScriptInstanceコンポーネントをCannonノードに追加します(作成->コンポーネント->ロジック-> ScriptInstance)。 [選択]ボタンをクリックして、新しく作成したファイルを選択し、[クラス名]列にCannonと入力します(ファイルには複数のクラスが含まれる場合があります)。 入力後、Enterを押すことを忘れないでください。 すべてが正しく行われると、スクリプトで宣言した方向変数がクラス名の下に表示されます。



RevertOnPauseスイッチ(上部パネルの3番目のボタン)がアクティブになっていることを確認し、RunUpdatePlayボタン(上部パネルの最初のボタン)をクリックします。 銃は前後に回転し始めます。 停止するには、RunUpdatePause(中央のボタン)をクリックします。







RevertOnPauseスイッチは何をしますか? アクティブな場合、シーンを開始する前にシーンの状態が記憶され、一時停止をクリックすると、状態が元に戻ります。 このボタンは、レッスンの後半で引き続き役立ちます。



それまでの間、シーンを「ファイル」->「シーンを別名で保存...」ファイルGameData / Scenes / Level01.xmlに保存します。



継続するには...



All Articles