Unity

[Unity] 第6回ゲームエフェクトコンテストに参加してみた

More than 1 year has passed since last update.

第6回ゲームエフェクトコンテストとは

image

  • https://www.gameeffectcontest.com/
  • 2017年2月25日までエントリーを受け付けていたコンテスト
  • 第6回からUnity部門も開催したため、乗り込んでみることに
  • 賞は取れなかったものの、初めてがっつり演出を作ったので、どういう風に制作したか書いてみることに

作ったもの

プロジェクト

実行環境

  • Unity5.5.1f1

0. 全体の制御

  • Animationでのみ制御
  • 親となるGamePbjectを作成し、そこにAnimationを追加
  • 子要素にパーティクルやカメラを含み、制御させる
    • パーティクルの発火や消滅
    • カメラの移動
    • オブジェクトの回転速度の制御 (publicな変数はAnimationで制御できる)
  • AnimationはGameObjectのリネームや移動がしにくいのが難点だった
    • 参照が直ぐに外れてしまう

image

1. 箱の出現演出

effect1.gif

image

Ground

  • 地面に這うようなエフェクト
  • Shapeモジュールに Box を指定し、BoxZ の値を0にすることで地面に這わせている
    • Emit fromEdge にすることで箱形状の縁に沿わせて粒子を出現させている
  • Animationによって Color の α を下げることでフェードアウトさせている

Aura

  • 元の素材を Renderer モジュールの RenderModeStretch Billboard に指定することで引き伸ばし
  • Start Speed を設定することで上方に射出

Cube

  • Unity標準機能のプリミティブでCubeを作成
  • StanderdShaderのRenderModeをFadeにすることで透過した箱に

Edge

  • 箱を発光させているように表現する目的 + 最終演出用
  • Shape モジュールに Boxを指定

2. 箱への攻撃

effect2.gif

image

Arrow

  • 箱に向かって飛んでいく赤/青の光のパーティクル
  • 元の素材を Rendererモジュール: RenderMode を Stretch Billboard に指定することで引き伸ばし
  • Emissionモジュール: RateOverTime をAnimatorで制御することで時間に応じて数を増加
  • Shape モジュールを Hemisphere に設定、 Emit from Shell を有効にすることで半円から中心に向かって飛ばすように設定
  • Collision モジュールにて衝突時にパーティクルを消滅させるように設定
  • SubEmitters モジュールにて Collision (衝突時) 指定することで、Cubeと衝突時に各種破片を出すように設定
  • Trails トレイルモジュールはUnity5.5からの新機能

trail_on.gif trail_off.gif

Debris

  • Arrowが砕けた際に出る破片のパーティクル
  • Arrowの SubEmitters モジュールにより発生
  • Emmision モジュールの RateOverTime を 0にし、 Burst を指定することで、衝突した瞬間にのみエフェクトを発生させる
  • またArrow 側の SubEmitters モジュールにて Inhert をColorに指定することでArrowの色を継承
    • Arrowの破片が発生したように見せる工夫

Glass

light_on.gif light_off.gif

Light

  • Arrowのヒットエフェクトの役割のパーティクル
  • Arrowの SubEmitters モジュールにより発生

Cubeの回転

  • シンプルなRotateするScriptを実装
  • angleYをAnimationによって制御することで回転速度を変更する
RotateCube
using UnityEngine;

public class RotateCube : MonoBehaviour
{
    public float angleY;

    void Update ()
    {
        this.transform.eulerAngles += new Vector3(0, angleY, 0);
    }
}

3. 箱への集中攻撃

effect3.gif

image

Arrowの複製

  • Arrowと設定は殆ど一緒
  • Emission モジュールだけ変更し、継続的な出現ではなく、 Burst による一括出現に変更
  • また Simulaton Speed を1から下げることで、スローに見せている

MotionBlurの適応

  • 衝突タイミングでのみCameraにポストエフェクトである MotionBlur を適応してある
    • StandarAssetsから拝借
    • 今であればむしろ New Post-processing Stack を使うのが良い
    • 動きに対してブラーを適応することでスローな感覚を強調

4. 箱の消滅

effect4.gif

Cubeの消滅

  • Matrialのα値を下げることでじわじわ消滅させる

Edgeの演出

その他

  • Cameraに対していくつか ImageEffectをアタッチ
    • 光表現を強調するためにアタッチした Bloom はともかく、他は冗長だったかも (重くなったかも)
    • 今であればやはり New Post-processing Stack がパフォーマンス的にも良さそう

imageeffect.gif

感想