UnityのGUIの基本的な作り方――uGUIのPanel、Button、Text、Imageの使い方:ゲーム開発初心者のためのUnity入門(15)(4/5 ページ)
Unityで3Dゲームを作るまでのいろいろな処理を解説する連載。今回は、Unity 4.6から追加されたUIコンポーネントの使い方を解説。クリックやタッチでゲーム操作ができるようにしてみよう【Windows 10、Unity 5.5に対応、C#のコードを追加】。
Buttonに関連付けるアニメーションの設定
「ガッツポーズ」「ジャンプポーズ」のアクションを追加しよう。この処理は、連載第7回の「StateとTransition(メカニムステートマシン)」で解説しているので、参照してほしい。今回はそれぞれ名前を「WIN00」「JUMP00」とした。
全て設定すると、図19のようになる。
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"); }
まず、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"); }
作成した関数を各Buttonの「On Click()」と関連付ける
次に、リスト1のUnityChanWinActionメソッドとUnityChanJumpActionメソッドを各Buttonと関連付ける。
まず、Hierarchyから「GutsPoseButton」を選択し、表示されるInspectorの「Button(Script)」の一番下にある、「On Click()」の「+」をクリックする(図20)。
すると、「On Click()」の内容が図21のように変化する。
図21の「None(Object)」と書いてある個所に、Hierarchy内の「GutsPoseButton」をドラッグ&ドロップする(図22)。すると、「No Function」が使用可能になる。
図22の状態から「No Function」の右端にある「上下▲▼」ボタンをクリックし、「ButtonAction」→「UnityChanWinAction」と選択する(図23)。
このとき、リスト1のC#の場合は、UnitychanWinActionメソッドをpublicな関数として作成しておかなければ、ここに表示されないので、注意してほしい。
同様に、Hierarchyの「JumpPoseButton」に関しても同じ手順で、今回は「UnityChanJumpAction」を選択する。「None(Object)」と書いてある個所に、Hierarchy内の「JumpPoseButton」をドラッグ&ドロップすることを忘れないようにしてほしい。
このように、2つのButtonには前述の「ButtonAction」スクリプトの関数を追加しておくことを忘れないでいてほしい。
実行してみると、動画3のようになる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Gear VRとは――UnityでAndroidアプリを開発するための環境構築
HMDの中でも比較的扱いやすいGear VRで体験できるVR/ARコンテンツをUnityで開発する方法を紹介する連載。初回は、Unityや、Androidアプリを開発するのに必要なAndroid Studioをインストールして、Gear VRコンテンツの開発環境を構築する。 - HoloLens用Unity 5のプロジェクトをUWPとして書き出しエミュレータで動かす
拡張現実(AR)用ヘッドマウントディスプレイ「HoloLens」のエミュレーターを使ってHoloLens用アプリの作り方を解説する本連載。今回は、HoloLens用Unity 5で簡単なUnityプロジェクトを作成し、それをUWPに書き出してHoloLens Emulatorに配置する方法について。 - UnityでWebカメラの画像をリアルタイムで複数テクスチャとして表示する&Kinectセンサーと連動させる
ゲーム開発環境Unity 5の「Personal Edition」では、Unity 4.6以前では有料だった機能が無料で使えるようになった。本連載では、Unity 5で無料になった機能の使い方について解説していく。初回はWebカメラと、「Kinect for Windows v2」を使ったサンプルを紹介する。