はじめに
わーい、読んでくれてありがとう!
この記事ではサークル活動で作成したボール転がしゲームを、カメラに注目して改造してみたいと思います。
目次
- 改造前の状態
- どんなの作ったの?
- 改造その1
- 作って(み)た!
- プレイヤーの速度に対応してカメラを広げる
- 改造その2
- 移動の入力に対応してカメラを広げつつ、ゆるやかに縮めもする
- 最後に
改造前の状態
どんなの作ったの?
Unity班共通で作ったゲームは文章で説明するとこんな感じ。
・プレイヤ…矢印キーで移動する。
・ステージ…四角い!
・カプセル…10個取ったらクリア。
てなわけで、このゲームのカメラはプレイヤーに追従するタイプだったんです。
ゲームが始まった直後の座標の差を保つように位置どることで追従しているんですね。
改造その1
作って(み)た!
これは「作ってみた!」って感じの記事ですが、
実は、この一つ目の改造まではアドベントカレンダーの話を聞く前に作っていました。
話題にちょうどいいなと思ったものの、すでに作ってあるものをぱっと見せるだけでは味気ないと思いさらに改良する その2 までやってみようと思ったんですね。
というわけで、その1まではすでに作ってあるものです。
ぱっと見せようと思います。
プレイヤーの速度に対応してカメラを広げる
カメラが近いと見づらいし、遠いと見やすくなるけどその分簡単になってしまい、単調なゲーム性が浮き彫りになって面白くない。
そこでプレイヤーの速度に対応してカメラを遠くすることで「長い間移動入力をすると周りが見えるようになるが、制御が難しくなる」という駆け引きを作ろうと思いました。
Get Velocity ノードを使ってプレイヤーのx,y,z速度を取得し、足し合わせた値をそのままプレイヤ・カメラ間の距離に加えているんですね。
カメラは斜めの位置からプレイヤを見下ろしているので、三角関数用のを変数を作って適用しています。
早速見てみましょう。
右下に入力してみます。
おお・・・
おお~!
ゴスッ
速度が高まってから0になってしまったのでカメラが一瞬でギュッとなってしまいました。
遊びにくいです。クソゲー確定ですね。
改造その2
移動の入力に対応してカメラを広げつつ、ゆるやかに縮めもする
このままでは壁にぶつかるたびにギュッとなってしまいます。
さらに、Uターンやブレーキをしようとすると同様に視野が急激に狭まってしまうので、「移動入力をした際のリアクションが正反対になる」という気持ち悪い体験を提供してしまいます。このままではいけない。
なので、移動入力をした際は一律でカメラが遠のくようにして、常にゆるやかに縮めるようにすることで2つの問題点を解決しようと思います。
完成したものがこちらです。(作成風景の録画データが消えてしまいました)
↓速度を取得するノードから固定の値を読み込むように変更
さらに、新しく追加。
加速(入力)するほどカメラがより遠のく様子を再現したり、常に値を緩やかに減らしたり、ボールに近づきすぎたら減らすのを止めたりしてる。
遊んでみよう!
どうだ・・・?
ぶつかってもギュッとならない!
壁に向かって入力すれば見通すこともできる。面白いかも。
ブレーキの入力でも視野が広がって気持ちいい!
わーい
速度を参照した時と違い、入力の強さが画面の広がりに反映されるのでボールの動きがつかみやすく快適なゲームになりました。
最後に
シンプルなゲームにも一つのアイデアでかなり面白くなります。
その中でも、今回加えた「面白さ」はゲーム性ではなく視覚的な面白さですね。
キャラクターを動かしてるだけで面白いってゲームの強みになりうるな~と思いました。
よかったらまねしてみてね。