【PCゲーム】Screeps: Arenaの遊び方(チュートリアル「Simple move」)を日本語に!和訳して解説!(その2)

Screeps:Arena開始画面JavaScript

前回はloop()関数の中に処理を記述して、ファイルを実行することでゲームを進めるということが分かりました。チュートリアル1については下記のリンクを参照してください。

それでは2番目のチュートリアルである「Simple move」を和訳(意訳)して解説していきましょう。

各チュートリアルは別途記事にしてありますので、他のチュートリアルは下記を参考にしてください。

  1. Loop and import(ループとインポート)
  2. Simple move(単純な移動)
  3. First attack(初めての攻撃)
  4. Creeps bodies(クリープの各パーツ)
  5. Store and transfer(エネルギーのストアと転送)
  6. Terrain(地形)
  7. Spawn creeps(クリープを生成)
  8. Harvest energy(エネルギーの採取)
  9. Construction(工事・建築)
  10. Final test(最終試験)

Simple move -単純な移動ー

素晴らしい! デフォルトのスクリプトフォルダはステップ(著者注:チュートリアルの章)ごとに異なるため、ここでは別のファイルを編集する必要があることに注意してください。 ただし、フォルダはいつでも変更できます

著者
著者

チュートリアルが変わると編集するファイルが変わるので、チュートリアル1のファイルを編集して保存してもプレイ出来ないので注意が必要です

それでは、ユニット、つまりクリープに会いましょう。 ドキュメント(著者注:ゲーム画面の一番上に「Documentation」ボタンがあるのでそこで確認できます)からわかるように、すべてのクリープで実行できます。クリープはさまざまなアクションが出来、明快に動くことができます:

creep.moveTo(target);

このコマンドは、クリープをターゲットに向かって1ステップ移動します。 ループの反復ごとに実行すると、クリープは目的地まで移動します。 この関数を呼び出すとすぐにその位置は変更されないことに注意してください。ループ関数が終了した後に移動処理が発生します。

コードからクリープにアクセスする方法は? getObjectsByPrototypeと呼ばれる特別な関数があり、指定されたプロトタイプまたはクラスを持つすべてのゲームオブジェクトを含む配列を返します。 次のように、ゲーム内のすべてのクリープを選択できます。

import { getObjectsByPrototype } from '/game/utils';
import { Creep } from '/game/prototypes';

export function loop() {
    var creeps = getObjectsByPrototype(Creep);
}

このチュートリアルステップでは、プロトタイプ名も持つFlagオブジェクトがあります。

目的:move Toメソッドを使用して、クリープステップを旗に乗せます

サンプルコード

import { getObjectsByPrototype } from '/game/utils';
import { Creep, Flag } from '/game/prototypes';

export function loop() {
    var creeps = getObjectsByPrototype(Creep);
    var flags = getObjectsByPrototype(Flag);
    creeps[0].moveTo(flags[0]);
}

getObjectsByPrototype()メソッドは/game/utilsからインポート、Creep, Flagは/game/prototypesからインポートしてからでないと利用出来ないので注意してください。

creeps変数にCreep達のオブジェクトを配列にいったん入れて、moveToで各先頭のオブジェクト([0])を指定しているのが分かります。

VSCodeでサンプルコードを記入したら「PLAY」ボタンでゲームを開始できます。

まとめ

  • getObjectsByPrototype()メソッドは/game/utilsからインポート
  • Creep, Flagは/game/prototypesからインポート
  • var creeps = getObjectsByPrototype(Creep);でいったんユニットを配列に格納する
  • 格納した配列から取り出したユニットを自機.moveTo(目標)で動かす

単純に移動させるには、自機オブジェクトと目標オブジェクトの取得が必要ということですね。

タイトルとURLをコピーしました