LoginSignup
21
15

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-04-05

第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

感想

21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15