取り組みの概要
勉強会でモブプロでゲームを作っています。今回で4回目になりますがあーだこーだ言いながら何とか作成しました。
企画内容の検討
ニンテンドーDSなどで勉強しつつ、どのゲームを移植(パクリではない)しようか検討した結果、オブジェクトをタッチする系のゲームになりました。別のチームの企画内容を確認すると雰囲気が被っていたため、見た目などを被らないように取り組みました。
考えたゲームの企画内容
別チームは画面をタッチして蚊を倒すゲームらしいので、こちらはタッチしたら蝶を捕まえるゲームとしました。ゲームの仕組みは同じモノになりますが、ゲームの目的を違うように見せ方を変えてます。企画内容の被りについてはそれぞれ違った方向に展開するのが良いと感じ、ゲームの目的を変更するように作っていくのは間違っていないように思います。
ゲーム画面
- タイトル
- プレイ画面
- ゲームクリア
- ゲームオーバー
蝶を捕まえるということで額縁の蝶を捕まえるようにしました。見た目をエレガントな雰囲気にしてみました。蚊をやっつけるゲームは見た目がポップなので差をつけてみたつもりです。
ランダムな動作ですがこちらはAddForceで加速度を使用しています。制御的に心配なところもありましたが、キビキビしたカンジがもう一方のゲームと異なったように思います。
private float changeTime = 0.3f;
private float timeElapsed;
private float timeOver;
private float limitTime = 20;
private float thrust = 10;
private const float minSpeed = -20;
private const float maxSpeed = 20;
void Update()
{
direction = Random.Range(0, 360);
//Vector3 pos = new Vector3(x,0,0);
//gameObject.transform.rotation = new Quaternion(this.transform.position.x, this.transform.position.y, this.transform.position.z, direction);
//gameObject.transform.rotation = new Quaternion(this.transform.position.x, this.transform.position.y, this.transform.position.z, direction);
timeElapsed += Time.deltaTime;
timeOver += Time.deltaTime;
time.text = (limitTime - timeOver).ToString("F2");
if (timeOver >= limitTime)
{
SceneManager.LoadScene("GameOverScene");
}
if (timeElapsed >= changeTime)
{
//transform.Rotate(transform.position.x, transform.position.y, direction);
timeElapsed = 0;
rb.velocity = new Vector2(0, 0);
rb.AddForce(new Vector2(Random.Range(minSpeed, maxSpeed), Random.Range(minSpeed, maxSpeed)), ForceMode2D.Impulse);
}
}
オブジェクトの生成について
どちらのゲームも複数のオブジェクトが画面に出現するわけですが、こちらのゲームは最初から設置している状態でスタートします。蚊のゲームではオブジェクトをプレハブ化して最初にコードからInstantiateで生成する形になっています。後々のことを考えるとプレハブ化してInstantiateする方が良いカンジです。ただ、Unityでは最初から設置してもミニゲームとして成立できるので、今回のような時間が限られてしまうときにはイイかもしれません。
総括
- ゲームの企画が被ったが見た目が違ったゲームになってよかった
- 見た目だけでなくプログラミングの内容も異なった
- 制御方法やオブジェクトの生成などアプローチはいろいろ
- モブプロで詰めるところは詰めて端折るところは端折ってイイかもしれない