白黒羊

Unity Assetを使う#01 「Farmer SD」

久しぶりにUnityで遊んだので、Unity Asset記事です。
去年秋のセールで購入したアセットを試してみます。

Farmer SD

まずは、SURIYUNさんの「Farmer SD」です。

かわいい!

まずは、AssetStoreから、ダウンロード・インストールをします。
すると、「Assets」フォルダに「Suriyun」フォルダができるので、その中にあるシーン「Farmer」を実行してみます。

Farmer SD デモシーン実行

このデモシーンでは、右上にメニューが用意されているためそれをクリックするだけでその動き方をしてくれます。

道具を両手に分ける

Farmerくんはデフォルトでは農具というか武器を二種類持つスタイルで登場します。しかし両方とも右手に持っているのでものすごく手が疲れそうです。
そこで、両手に分けてあげることにします。

[Hierarchy]から「M07_test」>「Root_M」>「RootPart1_M」>……>「Chest_M」を開くと「Scapla_R」「Scapla_L」が出てくる

まず、[Hierarchy]から「Scapla_R」を選択します。肩甲骨ですね。
肩やら腕やらの中身を開いていくと、「Wrist_R」フォルダ下に「Sword_parentR」があり、その中に「Hoe」「Hoefork」があります。これが鍬と鋤ですね。ここにたどり着くまでには結構かかります。
この「Hoefork」を非アクティブにして、元の「Hoefork」のPrefabを「Sword_parentL」に、ぽんと配置すると、

右手と同じように左手側も[Hierarchy]を展開していきます

二刀流になりました!

髪色と服を変える

さて、Farmerくんに帽子を取ってもらうと、

このような髪型を見ることができます。
今は茶髪ですが、Asset Storeにあるサンプル画像にも髪色が違うFarmerくんが存在しているのを見たので、私も変えてみたいと思います。
まずは、髪のメッシュ部分を選択します。

「M07_test」>「Mesh」>「Hair07」を選択します

次に、[Inspector]で「Hair07」Shaderを選択し、髪の絵のマテリアルが表示されているところの「Select」をクリックすると、[Select Material]ウィンドウが表示されます。
そこで用意されている好きな髪色を選ぶとこんな感じで変化!

黒髪Farmerくん
白髪Farmerくん

テクスチャの色を画像加工ソフトでいじったりすると、もっともっといろいろな色で遊べそうですね!

色調補正によって金髪になったFarmerくん

あとは、[Inspector]の「Main Color」をいじるだけでも髪色かわって楽しいです。
いずれ髪型の変更にも挑戦してみたいところです。

同様に、テクスチャを選択することで服の色や模様を用意されている他のものに変更することもできます。
「M07_test」>「Mesh」>「Body07」を選択して好きなテクスチャを選びます。

スクショのタイミングの問題で鋤が髪を貫通してしまったFarmerくん

これもそのうちオリジナルの服のデザインを追加したいですね。

表情を変える

さて、次は表情について考えたいと思います。
というのも、こちら「sleep」という動作を設定したときなのですが、

sleepするFarmerくん(静止画ですが動画でも同じ状態)

ちょっと不安になる感じなので、もう少しすやすやと眠らせてあげたいですね。

Faceテクスチャを元にして、こんな感じの瞑目テクスチャを作ってみます。

目を瞑ったときのFarmerくんの顔を画像加工ソフトで作成

貼り付けてみるとこういう感じ。

先ほどのテクスチャを「Face」に貼り付けた状態のFarmerくん。つり目

あまりかわいくない。かもしれない。
顔という球面に貼り付けられるので平面で見るときよりはつり目になるんですね。
というわけでこんな感じで少し修正すると、

少したれ目ぎみに、角度付かないように修正

良い感じにできました。

瞑目Farmerくんの完成

次はsleepのときにこの表情になる設定にしたいです。
目パチとかはゆくゆくするとして。

【参考】

【しずおかアプリ部】資料まとめページ – Qiita

第17回_プレゼン資料(Unityはじめるよ~フェイスアニメーション~)

以下のようなスクリプトを「Face」に[Add Component]します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SleepFace : MonoBehaviour
{
    public Texture f_Normal, f_Sleep;
    public Animator anim;
    Renderer m_Renderer;
    bool isSleeping;

    void Start () {
        m_Renderer = GetComponent<Renderer> ();
        m_Renderer.material.SetTexture("_MainTex", f_Normal);
    }

    void Update() {
        isSleeping 
        = anim.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Sleep");
        if (isSleeping){
            m_Renderer.material.SetTexture("_MainTex", f_Sleep);
        }
        else{
            m_Renderer.material.SetTexture("_MainTex", f_Normal);
        }
    }
}
【参考】(アニメーション状態の取得)

Unityでアニメーションの状態を確認する – Qiita

[Inspector]から下の画像のように登録してあげます。

「SleepFace.cs」の[Inspector]での設定

できた!

歩いている途中に寝落ちしてしまうFarmerくん

開いた目と閉じた目の2種類だけなのでちゃんと確認するとカクカクしそうですがひとまず遊ぶには十分そうです。
移動や見た目の変更など、まだまだ試してみたいことはたくさんあるので次回も引き続きシリーズの「Farmer Girl SD」を使って遊んでみたいと思います。