連載
» 2017年04月03日 05時00分 公開

UnityのGUIの基本的な作り方――uGUIのPanel、Button、Text、Imageの使い方ゲーム開発初心者のためのUnity入門(15)(4/5 ページ)

[薬師寺国安,PROJECT KySS]

Buttonに関連付けるアニメーションの設定

 「ガッツポーズ」「ジャンプポーズ」のアクションを追加しよう。この処理は、連載第7回の「StateとTransition(メカニムステートマシン)」で解説しているので、参照してほしい。今回はそれぞれ名前を「WIN00」「JUMP00」とした。

 全て設定すると、図19のようになる。

図19 「WIN00」「JUMP00」を設定した

Buttonでアニメーションを制御するためのスクリプトではSetTrigger関数を使う

 Hierarchyから「GutsPoseButton」と「JumpPoseButton」を同時に選択しておいて、Inspectorから「Add Component」→「New Script」を選択し、「Name」に「ButtonAction」、「Language」に「C Sharp」を指定して、「Create and Add」ボタンをクリックする。

 Inspectorに「Button Action(Script)」が追加されるので、「Script」の「ButtonAction」をクリックしてVisual Studioを起動し、リスト1のコードを記述する。

private Animator anim;
private GameObject obj;
void Start () {
    obj = GameObject.Find("unitychan");
    anim =obj.GetComponent<Animator>();
}
 
public void UnitychanWinAction()
{
    anim.SetTrigger("winning");
}
 
public void UnitychanJumpAction()
{
    anim.SetTrigger("jumping");
}
リスト1 「Button」によってユニティちゃんのアクションを振り分けるコード(ButtonAction.cs)

 まず、Animator型の変数「anim」とGameObject型の変数「obj」を宣言する(1〜2行目)。

 Start関数内では以下の処理を行う。Findメソッドで「unitychan」にアクセスし、変数「obj」で参照しておく(4行目)。GetComponentで「Animator」にアクセスし、変数「anim」で参照しておく(5行目)。

 ユニティちゃんがガッツポーズを取るUnityChanWinAction関数を作成し(8行目)、SetTriggerで、図22のTrigger型のパラメーター「winning」を指定する(10行目)。必ずpublicな関数として作成する。

 ユニティちゃんがジャンプするUnityChanJumpAction関数を作成し(13行目)、SetTriggerにTrigger型のパラメーター「jumping」を指定する(15行目)。必ずpublicな関数として作成する。

 SetTriggerは、トリガーのパラメーターをアクティブに設定する関数だ。

 最後に必ずビルドしておこう。

 なお、JavaScriptのコードも記載しておく、コードの解説はC#と同じだ。JavaScriptで書きたい場合は、連載第5回のコラム「スクリプトエディタの切り替え」を参照されたい。

private var anim:Animator;
private var obj:GameObject;
 
function Start () 
{
  obj=GameObject.Find("unitychan");
  anim=obj.GetComponent(Animator);
}
 
function UnityChanWinAction()
{
  anim.SetTrigger("winning");
}
 
function UnityChanJumpAction()
{
  anim.SetTrigger("jumping");
}
リスト1 「Button」によってユニティちゃんのアクションを振り分けるコード(ButtonActionJS.js)

作成した関数を各Buttonの「On Click()」と関連付ける

 次に、リスト1のUnityChanWinActionメソッドとUnityChanJumpActionメソッドを各Buttonと関連付ける。

 まず、Hierarchyから「GutsPoseButton」を選択し、表示されるInspectorの「Button(Script)」の一番下にある、「On Click()」の「+」をクリックする(図20)。

図20 「On Click()」の「+」をクリックする

 すると、「On Click()」の内容が図21のように変化する。

図21 「On Click()」の内容が変化した

 図21の「None(Object)」と書いてある個所に、Hierarchy内の「GutsPoseButton」をドラッグ&ドロップする(図22)。すると、「No Function」が使用可能になる。

図22 Hierarchy内の「GutsPoseButton」をドラッグ&ドロップする

 図22の状態から「No Function」の右端にある「上下▲▼」ボタンをクリックし、「ButtonAction」→「UnityChanWinAction」と選択する(図23)。

図23 「UnityChanWinAction」を選択した

 このとき、リスト1のC#の場合は、UnitychanWinActionメソッドをpublicな関数として作成しておかなければ、ここに表示されないので、注意してほしい。

 同様に、Hierarchyの「JumpPoseButton」に関しても同じ手順で、今回は「UnityChanJumpAction」を選択する。「None(Object)」と書いてある個所に、Hierarchy内の「JumpPoseButton」をドラッグ&ドロップすることを忘れないようにしてほしい。

 このように、2つのButtonには前述の「ButtonAction」スクリプトの関数を追加しておくことを忘れないでいてほしい。

 実行してみると、動画3のようになる。

動画3 ボタンクリックでユニティちゃんが反応する

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。