LoginSignup
10
4

More than 1 year has passed since last update.

[Unity] 2D Animation でやる気のない Just Do It 動画を作る

Last updated at Posted at 2019-10-07

2019-10-08_051645.jpg

テンションの高いJust Do It! おじさんにも、やる気のないときはあります。
gif_animation_013.gif

今回は↑コレを作ってみます。

本家サイトから適当な静止画をキャプチャし、背景を透過したものをUnityにドラッグ&ドロップします。
JustDoItFull.png

次に、UnityのPackage Manager から2D Animation, 2D IKをインポートします。
2019-10-08_031836.png

インポートした画像をスプライトに設定し、Sprite Editorを開きます。
2019-10-08_032245.png

2D Animation, 2D IKをインポートしているとSkinning Editorのメニューが出るのでこれを選択します。
2019-10-08_032517.png

Auto Geometry でメッシュを作成します
2019-10-08_032744.png

体と腕の間にもメッシュができてしまうような場合は、Outline DetailとSubdivideの値を調整してメッシュを作り直してください。
2019-10-08_033035.png

メッシュができたら Create Bone でボーンを作っていきます。ダブルクリックでボーン作成開始です。
ボーンは親子関係があるので、腰から頭、肩から指先、腿からひざ下、のようにつないでいきます。
2019-10-08_033938.png

次に Auto Weights でボーンとメッシュを紐付けます。
2019-10-08_034344.png

が、真っ赤になってうまくいかなかったので、一旦Weights>Clearでクリアしてから Weight Brushで重みを付けていきます。

まずは頭のボーン(ここでは水色)を選択し、
2019-10-08_034832.png

そのままグリグリと塗っていきます。
2019-10-08_035048.png

ボーンを選択して回転させると、影響範囲に応じてメッシュが変形します。
2019-10-08_035200.png

引き続きどんどん塗っていきます。途中ボーンを回転させて確認しながら、重みがおかしいところを修正していきます。
2019-10-08_035614.png

また、腕・頭など、手前に来てほしいボーンは、
2019-10-08_040241.png

Edit Bone でボーンの優先を高くします。
2019-10-08_040502.png

一通り作業が済んだらApplyを押して終了。
2019-10-08_040843.png

作ったスプライトをHierarchyにドラッグ&ドロップして画面に表示します。
2019-10-08_041127.png

Inspector上でAdd Component > 2D Animation > Sprite Skin を選択し、
2019-10-08_041217.png

Create Bonesボタンを押すと
2019-10-08_041423.png

先ほどつけたBoneが追加されます。
2019-10-08_041707.png

以下のスクリプトをブラブラさせたい関節にアタッチして

PendulumTransform.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PendulumTransform : MonoBehaviour
{
    [SerializeField] Transform m_targetTr=null;
    [SerializeField, Range(-180f, 180f)] float m_range=5f;
    [SerializeField, Range(0.5f, 100f)] float m_period = 4f;
    Quaternion m_defRot;
    float m_freqTimer;

    // Start is called before the first frame update
    void Start()
    {
        if (m_targetTr == null)
        {
            m_targetTr = transform;
        }
        m_defRot = m_targetTr.localRotation;
        m_freqTimer = 0f;
    }

    // Update is called once per frame
    void Update()
    {
        m_freqTimer += Time.deltaTime / m_period;
        if(m_freqTimer > 1f)
        {
            m_freqTimer -= 1f;
        }
        float amgle = Mathf.Sin(m_freqTimer * Mathf.PI*2f);
        m_targetTr.localRotation = m_defRot * Quaternion.AngleAxis(amgle * m_range, Vector3.forward);
    }
}

パラメーターを調整して・・・
2019-10-08_073206.png

Unity RecorderでMovie化すれば完成!

10
4
3

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
10
4