白黒羊飼いの庭

unityで作るゲームの製作メモでしたが、最近は機械学習とかデザインとか何でもやってます

Unity Assetを使う① 「Farmer SD」

移転しました。
今後はこちらから更新します。

www.shirokurohitsuji.studio







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

Farmer SDを見てみる

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

かわいい!

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

f:id:shirokurohitsuji:20190209183615g:plain
Farmer SD デモシーン実行

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

道具を両手に分ける

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

f:id:shirokurohitsuji:20190209192225j:plain:w250
[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」に、ぽんと配置すると、
f:id:shirokurohitsuji:20190209212221j:plain
右手と同じように左手側も[Hierarchy]を展開していきます
二刀流になりました!

髪色と服を変える

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

f:id:shirokurohitsuji:20190212063145j:plain
「M07_test」>「Mesh」>「Hair07」を選択します
次に、[Inspector]で「Hair07」Shaderを選択し、髪の絵のマテリアルが表示されているところの「Select」をクリックすると、[Select Material]ウィンドウが表示されます。
そこで用意されている好きな髪色を選ぶとこんな感じで変化!
f:id:shirokurohitsuji:20190212063940j:plain
黒髪Farmerくん
f:id:shirokurohitsuji:20190212064003j:plain
白髪Farmerくん

Assetは基本的には改変しても良いとのことなので、テクスチャの色を画像加工ソフトでいじったりすると、もっともっといろいろな色で遊べそうですね!

f:id:shirokurohitsuji:20190212065049j:plain
色調補正によって金髪になったFarmerくん
あとは、[Inspector]の「Main Color」をいじるだけでも髪色かわって楽しいです。
いずれ髪型の変更にも挑戦してみたいところです。

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

f:id:shirokurohitsuji:20190212070235j:plain
スクショのタイミングの問題で鋤が髪を貫通してしまったFarmerくん
これもそのうちオリジナルの服のデザインを追加したいですね。

表情を変える

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

f:id:shirokurohitsuji:20190209214322j:plain
sleepするFarmerくん(静止画ですが動画でも同じ状態)
ちょっと不安になる感じなので、もう少しすやすやと眠らせてあげたいですね。

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

f:id:shirokurohitsuji:20190214084810j:plain
目を瞑ったときのFarmerくんの顔を画像加工ソフトで作成

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

f:id:shirokurohitsuji:20190214085031j:plain
先ほどのテクスチャを「Face」に貼り付けた状態のFarmerくん。つり目

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

f:id:shirokurohitsuji:20190214085756j:plain
少したれ目ぎみに、角度付かないように修正

良い感じにできました。

f:id:shirokurohitsuji:20190214085825j:plain
瞑目Farmerくんの完成

次はsleepのときにこの表情になる設定にしたいです。
目パチとかはゆくゆくするとして。
【参考】
【しずおかアプリ部】資料まとめページ - Qiita
https://monolizm.com/sab/pdf/第17回_プレゼン資料(Unityはじめるよ~フェイスアニメーション~).pdf

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

SleepFace.cs

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


たぶん良くないのですが、TextureとAnimatorはPublicにしてしまったので、[Inspector]から下の画像のように登録してあげます。

f:id:shirokurohitsuji:20190214110013j:plain
「SleepFace.cs」の[Inspector]での設定


できた!

f:id:shirokurohitsuji:20190214110104g:plain
歩いている途中に寝落ちしてしまうFarmerくん

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