【Lumberyard】Script Canvas Tutorials(Creating a Controllable Entity)邦訳
LumberyardのScriptCanvasに関するドキュメントを自分用に邦訳しました。
Google翻訳に突っ込んだだけの雑翻訳です。
日本語化されるまでの短い命
コントロール可能なエンティティの作成
このチュートリアルでは、キーボード入力で制御できる単純な球を作成する手順を説明します。ノードの基本、入力、移動、およびロギングに加えて、以下の重要な概念を学びます。
- ノードの追加
- 実行とデータ接続の作成
- イベントノードの追加
- アクションノードの追加
Step 1:レベルを作成する
キーボード入力で制御できる球を作成する前に、レベルを作成する必要があります。
レベルを作成するには
- Lumberyard Editorで、File、Newを選択します。
- [新しいレベル]ダイアログボックスでfirstscriptcanvasと入力し、[OK]をクリックします。
- [地形のテクスチャを生成]ダイアログボックスで512x512を選択し、[OK]をクリックします。
Step 2:エンティティを作成し、コンポーネントを追加して制御可能なエンティティを作成する
キーボード入力で制御できる球を作成するには、エンティティを作成し、メッシュ、リジッドボディフィジックス、メッシュコライダー、および入力コンポーネントを追加します。また、WASDキーボード入力をx方向とy方向の動きに変換する入力マッピングを作成します。
制御可能なエンティティを作成するには
1. Perspectiveビューポートの任意の場所を右クリックし、Create entityを選択してエンティティを作成します。
2. エンティティインスペクタで、次の操作を行います。
a. [名前]に「Player」と入力します。
b. コンポーネントの追加をクリックします。
c.「レンダリング」で、「メッシュ」を選択します。
d. Meshの下で、Meshアセットの場合は、参照(...)ボタンをクリックし、\ Game \ Objects \ defaultディレクトリに移動します。 primitive_sphere.cgfを選択し、「OK」をクリックします。
3. ビューポートで、移動ツールを使用してz軸を選択し、エンティティを地面から移動します。
4. 「エンティティ」インスペクタで、「コンポーネントの追加」をクリックします。物理の下で、剛体物理をクリックします。
5. コンポーネントの追加をもう一度クリックします。 Physicsの下で、Mesh Colliderをクリックします。
6. コンポーネントの追加をもう一度クリックします。ゲームプレイで、入力を選択します。
7. エンティティインスペクタの[入力]で、[入力バインディングエディタ]アイコンをクリックします。
8. 入力バインディング・エディタで、「ファイル」→「新規資産の作成」→「Input to Event Bindings Asset」を選択します。 [ファイル名]にplayerと入力し、[保存]をクリックします。
9. アセットブラウザで、player.inputbindingsファイルに移動します。ファイルを右クリックし、[開く]を選択します。
10. [アセットの編集]ウィンドウで、次の操作を行います。
a. 入力イベントグループでは、+をクリックして新しい入力イベントグループを追加します。
b. 入力イベント・グループを展開します。イベント名にmove_xと入力します。
c. イベントジェネレータの場合は、+をクリックしてイベントジェネレータを追加します。
d. [作成するクラス]ダイアログボックスで、[OK]をクリックして入力クラスを追加します。
e. move_x、イベントジェネレータ、gamepad_button_aに移動します。入力デバイスタイプでは、キーボードを選択します。
f. 入力名にkeyboard_key_alphanumeric_Aを選択します。
g. イベント値の乗数に-1を入力します。
h. 手順C〜Eを繰り返します。次に、入力名としてkeyboard_key_alphanumeric_Dを選択します。イベント値乗数の場合は、デフォルト値の1を使用します。
i. 次の図のように設定が表示されていることを確認します。
11. [アセットの編集]ウィンドウで、次の操作を行います。
a. 入力イベントグループでは、+をクリックして新しい入力イベントグループを追加します。
b. 入力イベント・グループを展開します。イベント名に「move_y」と入力します。
c. イベントジェネレータの場合は、+をクリックしてイベントジェネレータを追加します。
d. [作成するクラス]ダイアログボックスで、[OK]をクリックして入力クラスを追加します。
e. move_y、イベントジェネレータ、gamepad_button_aに移動します。入力デバイスタイプでは、キーボードを選択します。
f. 入力名として、keyboard_key_alphanumeric_Wを選択します。イベント値乗数の場合は、デフォルト値の1を使用します。
g. 手順C〜Eを繰り返します。次に、入力名としてkeyboard_key_alphanumeric_Sを選択します。イベント値の乗数に-1を入力します。
h. 次の図のように設定が表示されていることを確認します。
i. [保存して閉じる]をクリックします。
12. エンティティインスペクタの[入力]で、参照(...)ボタンをクリックし、player.inputbindingsファイルに移動します。 player.inputbindingsを選択し、[OK]をクリックします。
ステップ3:スクリプトキャンバスを使用して入力スクリプトを作成する
フィジカルと入力マッピングで球を設定したので、Script Canvasを使用して最初のスクリプトを作成できます。
入力スクリプトを作成するには
- Lumberyard Editorで、Tools、Script Canvasを選択します。
- スクリプトキャンバスエディタで、「ファイル」、「新規スクリプト」を選択します。
- 新しいキャンバスが読み込まれたら、[ファイル]、[名前を付けて保存]を選択します。
- [名前を付けて保存]ダイアログボックスの[ファイル名]にplayer.scriptcanvasと入力し、[保存]をクリックします。
- ノードパレットで、検索ボックスにinputと入力します。*1
- 入力パレットをノードパレットからキャンバスにドラッグします。入力ハンドラはイベントノードです。イベントが発生すると、イベントノードはスクリプトにメッセージを送信します。
- イベント名に「move_y」と入力します。これは、ノードに入力イベントをリッスンするように指示します。
- ノードパレットで、検索ボックスに「log」と入力します。
- ログをノードパレットからキャンバスにドラッグします。ログはアクションノードです。アクションノードを実行すると、データの要求、データの設定、データの操作、トリガなどのアクションが完了します。アクションノードはエディタコンソールにデータを出力し、スクリプトの実行中に値を確認することもできます。
- Input Handlerの保持ピン(白い矢印)を選択し、ドラッグしてLogのInピンに接続します。この接続は、入力ハンドラが保持されたイベントを受け取った後に実行するLogノードを指示します。*2
- Input HandlerのValueピン(黄色の円)を選択し、ドラッグしてLogのValueピンに接続します。この接続は、入力ハンドラノードから入力ハンドラからの入力イベント値をLogノードの最初の引数に渡すように指示します。*3
- スクリプトが次のイメージのようになっていることを確認します。
Step4:エンティティにスクリプトを割り当ててスクリプトをテストする
作成したスクリプトは、入力イベントの値を出力します。これで、エンティティにスクリプトを割り当て、スクリプトをテストできます。
スクリプトを割り当ててテストするには
- スクリプトキャンバスエディタで、ファイル、保存を選択します。 Ctrl + Sを押すこともできます。
- Lumberyard Editorで、手順2:エンティティの作成およびコンポーネントの追加で作成したエンティティを選択して、制御可能なエンティティを作成します。
- 「エンティティ」インスペクタで、「コンポーネントの追加」をクリックします。
- [スクリプト]の[スクリプトキャンバス]を選択します。
- スクリプトキャンバスで、参照(...)ボタンをクリックし、player.scriptcanvasファイルに移動します。 player.scriptcanvasを選択し、[OK]をクリックします。
- Ctrl + Gを押してゲームモードに入ります。
- 入力イベントをトリガーするには、Wを押してからSを押します。ランバーヤードエディターのコンソールペインでは、move_yイベントがトリガーされたときに入力イベントの値が出力されます。この場合、コンソールペインはWを押して1を出力し、Sを押すと-1を出力します。
- スクリプトのテストが終了したら、Escキーを押します。
ステップ5:あなたの球を動かすためのスクリプトを作成する
最初のスクリプトが正常に作成されたので、スクリプトにノードを追加して球を移動することができます。また、入力イベント値を変更して移動速度を制御します。
球を動かすには
- スクリプトキャンバスエディタのノードパレットで、検索ボックスに「multiply」と入力します。
- Node PaletteからキャンバスにMultiplyをドラッグします。
- Input HandlerのHeldピンを選択し、ドラッグしてMultiplyのInピンに接続します。この接続は、入力ハンドラが保持イベントを受け取った後に乗算ノードを実行します。
- 入力ハンドラのValueピンを選択し、それをドラッグしてMultiplyのArg1ピンに接続します。
- Multiplyノードで、Arg2に0.1と入力します。入力イベントのこの小さな値は、移動速度を抑制します。
- ノードパレットで、検索ボックスに「move」と入力します。
- エンティティをノードパレットからキャンバスにドラッグしてドラッグします。
- ノードパレットで、検索ボックスに「vector 3」と入力します。
- ノードパレットからキャンバスに値からコンストラクタをドラッグします。このノードを使用して、番号からvector 3を構築します。
- MultiplyのOutピンを選択し、ドラッグして値から構築するInピンに接続します。
- MultiplyのResultピンを選択し、ドラッグして値から構築するためにYピンに接続します。 y方向のみが必要なので、XとZにはデフォルト値(0)を使用します。
- 「値から構築」のOutピンを選択し、ドラッグしてMove EntityのInピンに接続します。
- 値から構成するためのvector 3ピンを選択し、ドラッグして移動エンティティの方向ピンに接続します。
- スクリプトが次のイメージのようになっていることを確認します。
- [ファイル] - [保存]を選択します。 Ctrl + Sを押すこともできます。
- ランバーヤードエディタで、Ctrl + Gキーを押してゲームモードに入り、スクリプトをテストします。
- 球を前方に移動するには、Wを押します。球を後方に移動するには、Sを押します。
- スクリプトのテストが終了したら、Escキーを押します。
ステップ6:あなたの球のX軸に動きを加える
エンティティをy軸に移動する方向に入力イベント値を変換したので、x軸に移動を追加できます。
x軸に動きを加えるには
- スクリプトキャンバスエディタでキャンバスをドラッグして、入力ハンドラ、掛け算、値から構築、およびエンティティノードの移動を選択します。選択したノードの周りにオレンジ色のアウトラインが表示されます。
- Ctrl + Cを押して、選択したノードをコピーします。
- Ctrl + Vを押して、コピーしたノードとその接続を貼り付けます。これにより、既存のスクリプトを複製して、x軸上の移動に適した設定で複製されたバージョンを変更することができます。
- 選択したまま、コピーされたノードと重ならないようにノードを移動します。
- 重複する入力ハンドラノードで、イベント名に「move_x」と入力します。
- Duplicate MultiplyノードのResultピンとDuplicate Valuesノードの重複するYピンを結ぶ黄色の線を探します。値から構築ノードのYピンの近くの接続をクリックし、Xピンに移動します。*4
- スクリプトが次のイメージのようになっていることを確認します。
- [ファイル] - [保存]を選択します。 Ctrl + Sを押すこともできます。
- ランバーヤードエディタで、Ctrl + Gキーを押してゲームモードに入り、スクリプトをテストします。
- 以下をせよ:
- 球体を前方に移動するには、Wキーを押します。
- 球体を後ろに移動するには、Sキーを押します。
- 球を左右に動かすには、AとDを押します。
11. スクリプトのテストが終了したら、Escキーを押します。