GDPR対応とは
もう既にゲーム本編の作成は終わっているのですが、これを正式リリースするためには諸々の作業が必要でして、何より前作をリリースした時と状況が異なるのは『GDPR対応』とか言う面倒くさい作業が必要になっているようで、一体それは何?から始まって何かしら英語の文章を作らないといけない事がわかって、英語を勉強をしてこなかったことを今更後悔して、それでも仕方ないのでGoogle先生の力を借りようにも、その前に『同意してください』的なお堅い文章を書くこと自体が出来なかったりして、それじゃぁに参考になりそうな文章を探そうとネットを彷徨っているうちに何故か添い寝JKにキスをしようとして店員に土下座して謝る動画を見ているとか、そんな無駄な日々を過ごして進捗が遅れています、どうしよう。あとGDPR対応についてはいずれ記事に書こう。
最初に宣伝
さて「Dull Things No Life」に登場する障害物紹介の二回目です。
Display
BGMに連動して文字を画面に表示します。
このアプリのアイコンにも登場する予定の障害物です。
こんなやつ
特におかしな動作はしないのでタイミングを計ればかわす事ができます。
下をくぐってかわすタイプ以外にも飛び越えてかわすタイプがあります。
Shutter
MotorBikeが迫ってくると通路の片側を閉じます。
事前に「右へ」「左へ」の表示が出るのでシャッターが閉じ始めたらそちらへ移動しながら壁をぐるっと一周廻ってかわします。
動画では難しそうですが一度コツを掴むと意外と簡単にかわせます。
Pillar
空中から上下方向にレーザーを発射します。
レーザーが発射されない箇所には矢印が表示されるので、そこを通って先に進みます。個人的には一番難易度の高い障害物だと思います。
反射神経が問われる障害物です。
障害物紹介は次回で最後になります。
カメラを揺らす
「Dull Things No Life」はいわゆるRUNゲームなので障害物に当たってはダメなのですが、他のRUNゲームのように「一発死」はしない(ゲームモードによって)ので、当たったよ!=ダメージを受けたよ!的な表現をあの手この手でしています。
SEを鳴らしたり、パーティクルを表示したり、画面に「MISS」と表示したり。。。
その中でも『カメラをランダムに揺らす』というのは非常に有効で、誰が見ても「あ、これはアカンな」と言うのが伝わる。なにせ画面が揺れるし。
カメラを揺らすにはTween系のAPIを使ってもいいし、カメラ用のアセットを使っても良いのですが、スクリプトを自作しても簡単なので紹介したいと思います。
public class CameraShaker : MonoBehaviour { [Header("Shake")] public Transform ShakeObject = null; // ここにカメラオブジェクトを設定する public float ShakeIntensity = 0.02f; // カメラの揺れの強さ public float ShakeDecay = 0.002f; // 揺れの減算値 public float ShakeAmount = 0.2f; // 揺れの強さ係数 private Vector3 originPosition; private Quaternion originRotation; void Start() { originPosition = ShakeObject.localPosition; originRotation = ShakeObject.localRotation; } public void Do() { StopAllCoroutines(); StartCoroutine(Shake()); } public IEnumerator Shake() { float shakeIntensity = ShakeIntensity; while (shakeIntensity > 0) { ShakeObject.localPosition = originPosition + Random.insideUnitSphere * shakeIntensity; ShakeObject.localRotation = new Quaternion( originRotation.x + Random.Range(-shakeIntensity, shakeIntensity) * ShakeAmount, originRotation.y + Random.Range(-shakeIntensity, shakeIntensity) * ShakeAmount, originRotation.z + Random.Range(-shakeIntensity, shakeIntensity) * ShakeAmount, originRotation.w + Random.Range(-shakeIntensity, shakeIntensity) * ShakeAmount); shakeIntensity -= ShakeDecay; yield return false; } ShakeObject.localPosition = originPosition; ShakeObject.localRotation = originRotation; } }
上のソースをオブジェクトにアタッチ→EditorからShakeObjectにカメラオブジェクトを設定、必要なタイミングでDoメソッドをコールするだけです。
実際に動作させるとこんな感じ
カメラを揺らす演出はいろんな場面に使えると思います。やる過ぎると酔うけど