はじめに

1.基本的なオブジェクト/パーツ(ゲームではどのように見えるか?)

まず、Baseplateのテンプレートから始めます。

邪魔にならないように、SpawnLocationを移動させます。

動かない部品が3つ、動く部品が1つあります。

動かない部品は以下の通りです。

そして以下のプレートは、ゲームの中で唯一動く部品です。

1.底面部分

底面を作ろう。”Workspace”に「Part」を追加します。名前を”Bottom”にします。

2.壁面部分

次に、壁を作ります。”Workspace”に「Part」を追加します。名前を”Walls”にします。 まず、正方形のボックスを作成します。

すると、大きな四角い箱が宙に浮いているのが見えると思います。

これから、内側に穴を開けます。

先ほど作成した “Walls”を複製します。複製したパーツの名前を”hole”にします。

”hole”のサイズを (98,200,98) に変更する。

ホームの 「衝突」ボックスのチェックを外す

では、「hole」のパーツを反転するように設定します。(モデル→反転)

”hole”が赤くなるのがわかると思います。

ここで再び、赤くなったパーツを選択します。

「移動」ツールを選択し、

赤いパーツを下に移動して、”Walls”のパーツを通過させます。

”NegativePart”と”Walls”の両方を選択します(Windowsでは「Ctrl」、Macでは「Comamnd」を使って、同時に選択します)。

ゲーム画面でも、私たちのパーツが選択されているのがわかるはずです(青い線で表示されています)。

次に、”ユニオン”をクリックします。(モデル→ユニオン)

2つのパーツが1つのモデル “Union”に統合されているのがわかると思います。

また”Walls”と名前を変えて下さい。

次に、「衝突」にチェックを入れて、”Walls”を緑色の矢印で下降させます。

プロパティで”Walls”の「CollisionFidelity」を「PreciseConvexDecomposition」に変更してください。

3.上面部分

最後に、”Bottom”を複製して名前を変え、”Top”を作成します。

プロパティで ”Top”パーツの設定を変更します。

  • Material (素材): Neon
  • Transparency (透明度):0.5
  • CanCollide (衝突):false(チェックを外す)
  • Anchored (固定):true(チェックをつける)

2.ゲームメカニクス(ゲームはどのように動くのか?)

3つのパーツが揃ったので、次は動くパーツを作ってみましょう。

スクリプトファイルの作成

ゲーム内でモノを動かすには、プログラミングをする必要があります。

プログラミングを行うには、スクリプトファイルを作成し、ゲームエンジンを動作させる必要があります。

“ServerScriptService”は、私たちが実行するスクリプトを置く場所です。

ゲーム内に2つの「Script」を作成しましょう。”destroyPart” と “makePlates” です。

”ServerStorage”は、ゲーム起動時に実行する必要のないスクリプトを置く場所であり、ストレージとして機能します。

また、ServerStorageの下に「Script」を1つ作成し、名前を “movePlate”としましょう。

では、”makePlates”プログラムを作成する前に、プレートを格納するためのフォルダを作成しましょう。 “Workspace”に「Folder」を追加し、名前を”plates”に変更します。

1.プレート作成用スクリプト

”makePlates”スクリプトをダブルクリックで開き、次のように入力します。

(game.ServerScriptService.makePlates)

おめでとうございます。 あなたは、ゲームに新しいパーツを作成するための最初のコードを入力しました。

「実行」をクリックし、エクスプローラーを見て、パーツがある場所を探します。

(エクスプローラで部品を選択後、「F」キーをクリックし、「右クリック」したまま移動して確認します。)

次のように入力すると、その位置が移動し、新しいサイズが与えられます。

もう一度、「実行」をクリックして、床の真ん中に自分のパーツが見えるかどうか確認してください。

さらに数行追加して、プレートの色と材質を変えてみましょう。

2.プレート移動のためのスクリプト

これからプレートを移動させるために以下の作業を行います。

”ServerStorage”の下にある”movePlate”スクリプトに、次のように入力します。

今、テストを実行しても、プレートは全く動きません。 これは、このスクリプトが誰のものかをコンピュータに教えていないためです。

”ServerScriptService”の下にある ”makePlates”スクリプトに戻り、以下の行を追加してください。

実行をクリックすると、プレートが動いているかどうかがわかります。

3.多数のプレートを生成するためのスクリプト

今のところ、ゲーム開始時に生成されるプレートは1枚だけです。

もっとプレートを作成してみよう!

同じスクリプト ”makePlates”の下に、0.2秒間隔でループを追加してください。

そして、同じ位置からたくさんのプレートが発生し始め、上に向かっていくかをテストで確認します。

4.プレート位置のランダム化スクリプト

そして、プレートを別の場所から生成するようにしましょう

プレートがランダムに広がるかどうかを確認する。

 

SpawnLocationの位置を修正

SpawnLocationを変更して、テストをしてみましょう。

SpawnLocationのデフォルトのデカールを削除して、完全に透明にします。

今、「プレイ」をクリックしてテストしてみると、下への落下速度が速すぎることに気がつくと思います。

ゲーム中の落下速度を制御するには、WorkspaceにあるGravityの値を変更する必要があります。

Gravity(重力):30(30でも速すぎる場合は低い値に変更する)

もう1度、試してみてください。

 

また、”Bottom”と”Top”に触れるものはすべて破壊されるようにする必要があります。

5.”Bottom”に触れるものを削除するスクリプト

このように、地面に倒れてもプレイヤーが生きていることがわかります。 ”ServerScriptService”の下の”destroyPart”に、以下のスクリプトを追加します。

ここでは、ビジュアル化して説明します。

1.プレイヤーが下に向かって落下している

2.”bottom”は、何かが自分自身に触れていることを感知し、destroyPart関数を呼び出します。

3.キャラクターは”bottom”に触れているので、Touched イベントはキャラクターをパラメータとして “destroyPart” 関数に送ります。 hitした部品(この場合はキャラクター)が削除されます。

では、” bottom”の部分が期待通りに機能しているかどうか、確認してみましょう。

6.Topに触れるものを削除するスクリプト

部品を破壊する機能はすでに作ってあるので、”Top”に触れるものを削除するスクリプトを追加するのは簡単です。

ここでも、キャラクターや足場など、天井に触れるものはすべて削除されます。

おめでとうございます。 あなたは最初のRobloxゲームを完成させました。