原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【Unity】ダメージ表現にはカメラを手ブレ風に

GDPR対応とは

もう既にゲーム本編の作成は終わっているのですが、これを正式リリースするためには諸々の作業が必要でして、何より前作をリリースした時と状況が異なるのは『GDPR対応』とか言う面倒くさい作業が必要になっているようで、一体それは何?から始まって何かしら英語の文章を作らないといけない事がわかって、英語を勉強をしてこなかったことを今更後悔して、それでも仕方ないのでGoogle先生の力を借りようにも、その前に『同意してください』的なお堅い文章を書くこと自体が出来なかったりして、それじゃぁに参考になりそうな文章を探そうとネットを彷徨っているうちに何故か添い寝JKにキスをしようとして店員に土下座して謝る動画を見ているとか、そんな無駄な日々を過ごして進捗が遅れています、どうしよう。あとGDPR対応についてはいずれ記事に書こう。

 

最初に宣伝

さて「Dull Things No Life」に登場する障害物紹介の二回目です。

 

Display

BGMに連動して文字を画面に表示します。

このアプリのアイコンにも登場する予定の障害物です。

 

f:id:Karvan:20190122223555p:plain

こんなやつ

 

特におかしな動作はしないのでタイミングを計ればかわす事ができます。

f:id:Karvan:20190212233622g:plain

 

下をくぐってかわすタイプ以外にも飛び越えてかわすタイプがあります。

f:id:Karvan:20190212233801g:plain

 

Shutter

MotorBikeが迫ってくると通路の片側を閉じます。

事前に「右へ」「左へ」の表示が出るのでシャッターが閉じ始めたらそちらへ移動しながら壁をぐるっと一周廻ってかわします。

f:id:Karvan:20180822001122g:plain

動画では難しそうですが一度コツを掴むと意外と簡単にかわせます。

Pillar

空中から上下方向にレーザーを発射します。

レーザーが発射されない箇所には矢印が表示されるので、そこを通って先に進みます。個人的には一番難易度の高い障害物だと思います。

f:id:Karvan:20190212234112g:plain

反射神経が問われる障害物です。

 

障害物紹介は次回で最後になります。

 

カメラを揺らす

「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メソッドをコールするだけです。

 

実際に動作させるとこんな感じ

f:id:Karvan:20190212234844g:plain

 

カメラを揺らす演出はいろんな場面に使えると思います。やる過ぎると酔うけど


 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。