ワーク搬送ゲームの改良

あけましておめでとうございます。ES部の森です。

 

前回から大きく間が開いてしまいましたが…今回は、前回宣言した通り展示会用に作成したワーク搬送ゲームを改良していきたいと思います。

 

(前回の記事 : ワーク搬送ゲームのスコア機能

 

ではまず、前回の最も反省点だったスコアの減点レベルの調整からしていこうと思います。

現時点ではかごに4つのワークを入れた際に計算されるスコアが最大300点なのに対し、最低点を設定していなかったため、きれいに積まないとどこまでも減点されてしまう仕様になっています。

また、今回のモデルはVRで行う想定のため、VRの操作に慣れていないと非常に難易度が高いものになってしまっているようです…。(展示会で低い点数が出てしまった方がいましたら申し訳ございませんでした…。)

スコア出力の前に以下の処理を追加して最低点を設定します。

 

if (sender.ScorePoint < -50)

{

sender.ScorePoint = -50;

}

 

これで計算されたスコアが-50点を下回った場合でも-50点になります。

 

総合スコアのほうも同様の方法で0点以下にならないように設定します。

また、ワークのズレなどによる減点数も減らし、難易度を調整します。

 

以上により、ゲームバランス問題は改善されたはずです。

 

 

続いて、新しい機能を追加してみようと思います。

ワークを落下させてしまったときにもペナルティが発生するというものを思いついたので、そちらを実装してみようと思います。

 

まず、ワークの落下を判定するために床に大きなセンサーを設置します。

ワークがセンサーに触れたときに総合スコアから減点されるようにします。ゲームバランスが崩れないように反省を生かして減点数は-20点くらいにしておきましょう。

 

わかりやすように落下した地点に「-20」というテキストが出現するようにもしてみます。

テキストはCreateVisualで作成します。床のセンサーのOnBlockedイベントに以下の処理を入れます。

 

var text : Visual = doc.CreateVisual("TextVisual");

 

text.LineHeight = 0.4;

text.Text = "-20";

 

text.WorldLocation = sender.BlockingLoad.WorldLocation;

text.WorldLocationY = sender.BlockingLoad.WorldLocationY + 0.5;

 

また、センサーに触れたワークはDestroyVisualで削除し、作成したテキストも3秒後に消えるようにします。

 

最後に、見た目も少し改良してみます。

今のままでは流れてくるワークの形がすべて同じなので特徴をつけてみようと思います。

ワークの判別はMaterialのColorで行っているのでColorが合っていれば見た目は変更することができます。

 

画像のように変更してみました。

形を変えたことにより性質も変化したのでゲーム性も上がったと思います。(大きいものは安定するが狭くて入れづらいなど)

 

スコアのボードも白いBoxにスコアとタイムが表示されているだけで地味なのでこちらも変えてみます。

Boxを組み合わせてモニターのような形にしてみました。

スコアの数字も見やすくなったと思います。

 

 

以上でおおまかなゲームの修正が完了です。

他にもボタンが押下されるまでワークが出現されないようにしたり、タイムアップのテキストを表示するなど細かい修正も加えましたが長くなるといけないので省略します…。

 

ここまでお付き合いくださりありがとうございました。改良後のゲームが実際に次の展示会などで使われるかはわかりませんが、自分にとってもとても勉強になったと思います。

 

次回は未定ですが、仕事を通して学んだことを書いていきたいと思います。