ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Unity »【Unity】【C#】SDクエリちゃんを目パチさせる

【Unity】【C#】SDクエリちゃんを目パチさせる  


 以前作った通常版の目パチスクリプトSD 用に改造してみよう。


 といっても、これもクラス名や定数名を SD 用に変更するだけで上手くいった。作り方は「QueryChanAutoBlink.cs」を「QueryChanSDAutoBlink.cs」などにリネームして、MonoDevelop などテキストエディタで以下のように変更するだけだ([Ctrl - H]で全置換するとラク)。作るのが面倒な人はサンプルをダウンロードして欲しい。


●スクリプト内で変更するクラス名や定数名
通常版用SD版用
QueryEmotionalControllerQuerySDEmotionalController
QueryChanEmotionalTypeQueryChanSDEmotionalType
QueryChanEmotionalType.NORMAL_EYEOPEN_MOUTHCLOSEQueryChanSDEmotionalType.NORMAL_DEFAULT
QueryChanEmotionalType.NORMAL_EYECLOSE_MOUTHCLOSEQueryChanSDEmotionalType.NORMAL_BLINK


●SDクエリちゃん用オート目パチスクリプト
using UnityEngine;
using System.Collections;

namespace QueryChanSD {
/**
* SDクエリちゃん用 オート目パチスクリプト
* * Close→Open 2段階変化
* 2015/6/11 Fantom
*/
[RequireComponent(typeof(QuerySDEmotionalController))]
public class QueryChanSDAutoBlink : MonoBehaviour {

/** オート目パチ有効フラグ */
public bool isActive = true;

//表情のマテリアル(目と口の組み合わせになってるので注意)
/** 開いている目 */
public QuerySDEmotionalController.QueryChanSDEmotionalType eyeOpen =
QuerySDEmotionalController.QueryChanSDEmotionalType.NORMAL_DEFAULT;
/** 閉じている目 */
public QuerySDEmotionalController.QueryChanSDEmotionalType eyeClose =
QuerySDEmotionalController.QueryChanSDEmotionalType.NORMAL_BLINK;

/** コントローラ(Script)のキャッシュ */
private QuerySDEmotionalController emotionalController;

/** 目パチ実行中フラグ */
private bool isBlink = false;

/** 目パチ全体の時間(Close→Open までの時間[秒]) */
public float timeBlink = 0.15f;

/** 目パチ全体の時間のゆらぎ時間(0.05 = timeBlink±0.05) */
public float fluctuation = 0.05f;

/** 目パチ発生ランダム判定の閾値(乱数0~1.0 で 0.3より上のとき発生[=70%]) */
public float threshold = 0.3f;

/** 目パチ発生ランダム判定実行のインターバル */
public float interval = 3.0f;

/** 目の状態を表すステータス */
enum Status {
/** 目が閉じている状態 */
Close,
/** 目が開いている状態 */
Open
}

/** 現在の目パチステータス */
private Status eyeStatus = Status.Open;


// Use this for initialization
void Start () {
emotionalController = this.GetComponent<QuerySDEmotionalController>();

//初期化(Status.Open 前提)
Reset();

//目パチランダム発生と変化をスタートする
StartCoroutine(RandomChange());
}

/** 状態初期化(目が開いていて[=Status.Open]、瞬きしてない[isBlink=false]状態にする) */
public void Reset () {
SetOpenEyes();
isBlink = false;
}

/** 目を閉じている状態にする */
void SetCloseEyes () {
eyeStatus = Status.Close;
emotionalController.ChangeEmotion(eyeClose);
}

/** 目を開いている状態にする */
void SetOpenEyes () {
eyeStatus = Status.Open;
emotionalController.ChangeEmotion(eyeOpen);
}

/** 目パチランダム発生と変化[(Open→)Close→Open] */
IEnumerator RandomChange () {
while (true) {
if (isActive) {
if (isBlink) {
switch (eyeStatus) {
case Status.Open: //Open→Close へ
SetCloseEyes();
yield return new WaitForSeconds(timeBlink + Random.Range(-fluctuation, fluctuation));
break;

case Status.Close: //Close→Open へ(ランダム発生待ち)
SetOpenEyes();
isBlink = false;
yield return null;
break;
}
} else {
//ランダム発生
if (Random.Range(0f, 1f) > threshold) {
isBlink = true;
}
yield return new WaitForSeconds(interval);
}
} else {
yield return null;
}
}
}
}
}


 使い方は前回のSDクエリちゃんの状態で、ヒエラルキーでキャラ(「Query-Chan-SD」)にこのスクリプトを追加するだけだ。


 気をつけて欲しいのはクエリちゃんの表情は目と口が1セットになっているので(「PQAssets>Query-Chan-SD>Models>SD_QUERY_01>Textures」のフォルダを参考に)、元の表情が口が開いてても、瞬きしたら口は閉じてしまう点だ(デフォルトの設定の場合)。その場合は、口が開いている表情に切り替える前に、「isActive=false」(目パチ停止)にし、元の表情に戻ったら「Reset()」(初期化)して、「isActive=true」(目パチ再開)などの工夫が必要になるだろう。マテリアルを指す「eyeOpen」「eyeClose」を直接変更する手もあるが、タイミング的に難しいかもしれない。

 SDクエリちゃんスクリプトをメニューでまとめるために namespace を「QueryChanSD」としているが、必要あれば変更するのも良いだろう。


(関連記事)
【Unity】【C#】SDクエリちゃんを動かす!
【Unity】【C#】SDクエリちゃんを飛行させる!
【Unity】クエリちゃんを動かす!
【Unity】【C#】クエリちゃんを目パチさせる
【Unity】【C#】クエリちゃんを飛行させる!
【Unity】SDユニティちゃんを動かす!
【Unity】SDプロ生ちゃんを動かす!
【Unity】【C#】SmoothFollow に回転アングルと距離の遠近機能を付けてみる
【Unity】【C#】FPS(フレームレート)をリアルタイムに測定して表示するv2(4隅選択可能で、画面サイズの変更にも対応版)


"Query-Chan model" は Creative Commons Attribution 4.0 International License(CC-BY) に基づいて配布されています。
"Query-Chan model" by Pocket Queries, Inc. is licensed under a Creative Commons Attribution 4.0 International License(CC-BY).




スポンサーサイト

category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityライブラリ  C#  クエリちゃん  サンプル 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/182-a9c7a2cc
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop