ユニティちゃんを操作してみる
ユニティちゃんの操作手順をまとめました。
【最新版の情報は以下で紹介】
1. ユニティちゃんの3Dモデルのダウンロード
今回は、「SDユニティちゃん 3Dモデルデータ」(SD_UnityChan-1.unitypackage)をダウンロードします。
© Unity Technologies Japan/UCL
2. プロジェクトの作成
Unityの新規プロジェクト(3D)を作成し、メニュー「Assets → Import Package → Custom Package」で、「SD_UnityChan-1.unitypackage」をインポートします。
インポートするとステータスバーに、以下のようなエラーがでていたので、ダブルクリックして該当箇所の「using System.Security.Policy;」を削除しました。
The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)
パッケージのフォルダ構成は、次のとおりです。
・UnityChan
・License : ライセンス
・Models : ユニティちゃんシェーダー
・Scripts : 各種スクリプト
・SD_Kohaku_chanz : こはくちゃんズのデータ
・SD_unitychan : ユニティちゃんのデータ
・Animations : アニメーション
・FaceAnimations : フェイスアニメーション
・Models : モデル
・Prefabs : プレハブ
・Scenes : シーン
3. ユニティちゃんと床の配置
(1) Hierarchyウィンドウに「UnityChan/SD_unitychan/Prefabs/SD_unitychan_humanoid」をドラッグ&ドロップ。
(2) カメラの位置と向きの調整。
Position = (0, 0.7, 1.85)
Rotation = (0, 180, 0)
(3) ライトの位置と向きの調整。
Position = (0, 3.5, 0)
Rotation = (30, 150, 15)
(4) Hierarchyウィンドウの「+ → 3D Object → Plane」で床を配置
Playボタンで実行すると、動作確認用のUI付きで表示されます。
4. ユニティちゃんのコンポーネントの設定
ユニティちゃんのモデルに追加されてるコンポーネントは、次の7つです。
・Animator : アニメーションの管理
・Idle Changer : モーションの変更
・Face Update : 表情の制御
・Auto Blinkfor SD : まばたきの制御
・Spring Manager : 揺れものの制御
・IK Look At : IKの制御
・Random Wind : ランダムな風
今回は、動作確認用のUIは必要ないので、「Idle Changer」「Face Update」を有効化のチェックをはずし、「Random Wind」「IKLookAt」の「Is GUI」のチェックをはずします。
5. Animatorの生成
「Idle」(立つ)と「Running」(走る)の状態を持つ「Animator」を生成します。
(1) Projectウィンドウで「Create → Animator Contoller」を選択し、名前に「UnityChanAnimatorController」を指定。
(2) 「UnityChanAnimatorController」をダブルクリックし、Animatorビューを開く。
(3) 右クリックのポップアップメニュー「Create State → Empty」でStateを生成し、名前に「Idle」、Motionに「UnityChan/SD_unitychan/Animations/SD_unitychan_mothion_humanoid/Standing@loop」を指定。
(4) 右クリックのポップアップメニュー「Create State → Empty」でStateを生成し、名前に「Running」、Motionに「UnityChan/SD_unitychan/Animations/SD_unitychan_mothion_humanoid/Running@loop」を指定。
(5) 左上の「Parameters」の「+ → Bool」でbool型のパラメータ「is_running」を追加。
(6) 「Idle」を右クリック「Make Transition」を選択し、「Running」をクリック。
(7) 「Idle → Running」の矢印を選択し、「Has Exit Time」のチェックをはずし、「Conditions」に「is_running : true」を追加。
(8) 「Running」を右クリック「Make Transition」を選択し、「Idle」をクリック。
(9) 「Running → Idle」の矢印を選択し、「Has Exit Time」のチェックをはずし、「Conditions」に「is_running : false」を追加。
6. ユニティちゃんにAnimatorを追加
ユニティちゃんにAnimatorを追加し、そのAnimatorを操作するスクリプトも追加します。
(1) ユニティちゃんの「Animator → Controller」に作成した「UnityChanAnimatorcontroller」を指定。
(2) ユニティちゃんに「Add Component」で新規スクリプトを追加し、名前に「UnityChanTest」を指定。
(3) 「UnityChanTest」を開き、次のように編集。
using UnityEngine;
using System.Collections;
// ユニティちゃんの動作テスト
public class UnityChanTest : MonoBehaviour {
Animator animator;
// スタート時に呼ばれる
void Start () {
animator = GetComponent<Animator>();
}
// フレーム毎に呼ばれる
void Update () {
// 前進
if (Input.GetKey("up")) {
transform.position += transform.forward * 0.01f;
animator.SetBool("is_running", true);
} else {
animator.SetBool("is_running", false);
}
// 左右回転
if (Input.GetKey ("left")) {
transform.Rotate(0, -1, 0);
} else if (Input.GetKey("right")) {
transform.Rotate(0, 1, 0);
}
}
}
Playボタンで実行すると、方向キーで走らせることができます。
7. ユニティちゃんをジャンプさせる
同様の方法で、ユニティちゃんをジャンプさせることができます。
// ジャンプ
if (Input.GetKey("space")) {
animator.SetBool("is_jumping", true);
} else {
animator.SetBool("is_jumping", false);
}
8. 現在再生しているアニメーションの取得
現在、どのアニメーションが再生されているかは、以下のコードで取得できます。
animator.GetCurrentAnimatorStateInfo(0).IsName("レイヤー名.アニメーションクリップ名")
走り中にログを表示するコードは、次のとおりです。
// 走り中にログ表示
if (animator.GetCurrentAnimatorStateInfo(0).IsName("Base Layer.Running")) {
print("is_running");
}
この作品はユニティちゃんライセンス条項の元に提供されています