ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

9,117 views

Published on

Published in: Technology
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
9,117
On SlideShare
0
From Embeds
0
Number of Embeds
852
Actions
Shares
0
Downloads
67
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

ゲームツクール!第6回 Unity×Unity-Chanでアクションゲームを作ろう

  1. 1. ゲームツクール!第6回 Unity×Unity-Chanで アクションゲームを作ろう! 2014/05/22 FAGStudio 浅野
  2. 2. 最初に このスライドは Unity情報番組「ゲームツクール!」 第6回Unity×Unity-Chanで アクションゲームを作ろう!の資料です。 操作手順などはこちらを参考にしてください。 ・Youtube(録画分) http://bit.ly/GameTukuru ・UStream http://www.ustream.tv/channel/16059441/
  3. 3. FAGStudio 代表 浅野 祐一 自己紹介 FAG Studio http://fagstudio.com/ スマートフォン向けのゲームを作っています! 鶏を愛してやまないゲームプログラマ!!
  4. 4. 書籍の紹介 3/26に「Unity4スクリプト入門」を出版しました!! 既刊の「Unity4入門」と合わせて書店やAmazonなどで購入で きます!! ※画像クリックで紹介ページにジャンプします。
  5. 5. はじめに 本日は、アクションゲームで便利に使える Mecanimを機能を利用してアニメーションのタイミ ングに合わせたボイス再生や、当たり判定の操作 を紹介します。 うまく活用するとスクリプトの量を減らす事ができま す!!
  6. 6. 本日の内容 1. Unity-Chanとは? 2. Unity-ChanをUnityに取り込もう 3. サンプルを確認してみよう 4. ステージを作ろう 5. アニメーションを追加しよう 6. スライディングで壁の下を潜ろう 7. ゴールを作ろう 8. 動作にボイスを連動させよう
  7. 7. Unity-Chanとは? 公式:http://unity-chan.com/ 詳しくは公式をご覧下さい!!
  8. 8. ユニティちゃんをダウンロードしよう! 同意してダウンロード
  9. 9. ユニティちゃんをダウンロードしよう! ユニティちゃんデータはUnityPackageで配布され ています。
  10. 10. ユニティちゃんをインポートしよう Unityを起動している状態で、Packageファイルをダブルクリック してUnityに取り込みましょう。 Unityちゃんのサムネイルインパクトありますね!
  11. 11. ユニティちゃんの動きを見てみよう! ProjectビューのAssets->UnityChan->Scenesに Unityちゃんのサンプルシーンがあるので どんなものか試してみよう! Unityちゃんのアニメーションを確認できます。
  12. 12. セットアップをしよう! まず最初は、Hierarchyビューに最初から置いてある MainCameraを削除してください。
  13. 13. セットアップをしよう! 続いて、ユニティちゃんをHierarchyビューに追加します。 Assets->UnityChan->Prefabs->for Locomotionにある 「UnityChan」と「MainCamera」をHierarchyビューの何も無い ところにドラッグしてドロップします!
  14. 14. セットアップをしよう! 続いて、一つ上の階層(Assets->UnityChan->Prefabs) に含まれているユニティちゃん用のDirectional LightのPrefab をSceneに追加しましょう! そうすることで見た目がいい感じになります。
  15. 15. AnimatorControllerを設定 Hierarchyビューに追加されたunitychanをクリックして InspectorビューにあるAnimatorコンポーネントの Controller項目の丸いアイコンをまずクリック UnityChanLocomotionsを選択します。
  16. 16. 床を作成しよう! UnityChanには最初から重力が適用され ているので床を設置しないと落下し続けて しまいます。 HierarchyビューのCreateからCubeを作 成しましょう。 Name: Floor Postion: 「X, 0」「Y,-1」「Z,0」 Rotation: 「X, 0」「Y,0」「Z,0」 Scale: 「X, 100」「Y, 1」「Z, 100」
  17. 17. Unityちゃんを動かす Unityちゃんを動かす事ができるようになりました。 矢印キーで動かせます。
  18. 18. ここからが本番!
  19. 19. 今日作るもの 1. ステージ 2. 障害物を潜れるスライディング 3. 勝利ポーズ 4. アニメーションに連動したボイス再生
  20. 20. まずサンプルスクリプトを見てみよう ・UnityChanControlScriptWithRgidBody.cs 1行1行、日本語のコメントがついている親切っぷりです!! これだけでもかなり勉強になるかも
  21. 21. ステージを作ろう HierachyビューのCreateからCubeを2つ作成してそれぞれを 次のように設定します。 ・Block Position 0, 1, 5 Scale: 5, 1, 1 ・Goal Position 0, 0, 10 Scale: 3, 3, 3 IsTrigger -> true
  22. 22. ステージを作ろう 資料では、見やすいように適当に作ったMaterialを 各パーツに割り当てておきます。 この辺は任意で好きな色や絵を設定してください。
  23. 23. AnimatorControllerを編集 Assets->UnityChan->Animatorsフォルダの中にある UnityChanLocomotions.controllerをダブルクリックでAnimator ビューを開きます。
  24. 24. AnimatorControllerを編集 Locomotionステートの上あたりに 「Sliding」「Win」の2つのStateを追加します。
  25. 25. AnimatorControllerを編集 追加したSlidingとWinそれぞれのInspectorビューのMotionに モーションデータを設定します。 Win -> WIN00 Sliding -> SLIDE00
  26. 26. AnimatorControllerを編集 続いて、AnimatorビューのParameterを2つ追加し ます。 一つ目、 Trigger型 “Sliding” 二つ目、 Bool型 “Win”
  27. 27. AnimatorControllerを編集 SlidingとWinはLocomotionから双方向にTransitionを設定しま す。
  28. 28. AnimatorControllerを編集 LocomotionステートのInspectorビューのTransitionsの Locomotion -> Sliding のConditionsにSlidingを設定します。 Locomotion -> Win のConditionsには Win : true を設定します。
  29. 29. AnimatorControllerを編集 WinステートのInspecotorビューのTransitionsも設定します。 ・Win -> Locomotions   Win : false
  30. 30. キャラクタースクリプトを作成しよう Hierarchyビューのunitychanに、Inspectorビューの一番下にあ るAddComponentから 「PlayerController」という名前のスクリ プトを作成します。 LanguageはCSharpで作ります。
  31. 31. キャラクタースクリプトを作成しよう スクリプト完成版はこちらから Zキーを押したらSliding、OnGoalが呼ばれたらWinの Parameterを変更するようにしています。
  32. 32. ゴールスクリプトを作成しよう HierarchyビューのGoalを選択して InspectorビューのAddComponentから Name : Goal Language : CSharp で新しいスクリプトを追加してください。
  33. 33. ゴールスクリプトを作成しよう スクリプト完成版はこちらから 中身は、OnTriggerEnter関数を用意して 当たり領域に侵入した相手に対して”OnGoal”をSendMessage するだけです。 SendMessageは、相手に渡した名前の関数があればそれを呼 んでくれる機能ですね。
  34. 34. ここまでで確認してみよう! とりあえず、スライディングと勝利ポーズが確認できるようになり ましたが、問題点が2つあります。 一つは、スライディングでBlockの下を潜れないのと、 もう一つは、ゴールについて勝利ポーズをしてもそのままの ポーズで動けてしまう点です。 次にそれらを対応していきます。
  35. 35. スライディングの高さの調整 Assets->UnityChan->Animationsの中にある unitychan_SLIDE00.fbxを選択してください!
  36. 36. スライディングの高さの調整 unitychan_SLIDE00.fbxのInspectorビューで まずAnimationsタブを選択して、下の方にある 「Curves」の+ボタンクリックします。
  37. 37. スライディングの高さの調整 すると、アニメーションカーブというデータが一つ追加されます。 名前を「slidingHeight」と変えておいてください。
  38. 38. スライディングの高さの調整 Preview画面のシークバーをしゃがむタイミングまで再生してか ら・・・
  39. 39. スライディングの高さの調整 AnimationCurverの赤枠で囲った+アイコンをクリックします。す るとKeyというパラメータが追加されます。 続けて、-1と数値を入力します。 最後にApplyをクリックしてください。 (忘れると追加が反映されません)
  40. 40. スライディングの高さの調整 同じ要領で、スライディングを終えて立つ直前にも-1のKeyを設 定します。 追加したらApply ボタンを押してください。
  41. 41. スライディングの高さの調整 再びUnityChanLocomotionのAnimatorビューを開いて Parametersに Float型のslidingHeightを追加してください。 先ほどSLIDE00に追加したAnimationCurveの名と同じ物が Paramtersにある場合、アニメーション側でAnimationCurverで 設定した通りにパラメータを変えてくれます。
  42. 42. スライディングの高さの調整 最後に、自動的に設定されるslidingHeightのパラメータを スクリプト側で取得して、いい感じにユニティちゃんの CapsuleColliderを調整してあげればBlockの下を潜れるように なります!! 「UnityChanControlScriptWithRigidbody」のスクリプトで ジャンプした際にColliderを調整している箇所があるのでそちら を参考にしてみましょう。
  43. 43. スライディングの高さの調整 スクリプト全体はこちらから
  44. 44. ゴール後は動けないように対応 UnityChanを歩かせているコンポーネントは unitychanに設定されている 「UnityChanControlScriptWithRigidbody」です。 これを無効にすれば、ユニティちゃんは歩けなくなります。
  45. 45. ゴール後は動けないように対応 スクリプト全体はこちらから ユニティちゃんコンポーネントをGetして・・・ OnGoal関数内でコンポーネントを無効に設定
  46. 46. 確認してみよう。
  47. 47. ボイスとアニメーションの連動 最後に、アニメーションと連動したボイス再生を実装します。 Assets->UnityChan->Animations unitychan_SLIDE00.fbxを選択してください。
  48. 48. ボイスとアニメーションの連動 手順はAnimationCurveを追加したときと同じ要領です。 unitychan_SLIDE00.fbxのInspectorビューで Animationsタグを選択して下の方にあるEventをクリックしてく ださい。 するとイベントのタイムラインが表示されます。
  49. 49. ボイスとアニメーションの連動 ボイスを再生したいタイミングまでPreviewを再生しておいて、 赤枠の+アイコンをクリックします。 すると、EventのKeyが追加されます。
  50. 50. ボイスとアニメーションの連動 こんなウインドウが開くので、Objectの赤枠で囲ったアイコンを クリックして・・・ univという名前のものがボイス素材なので好きな物を選んでく ださい。
  51. 51. ボイスとアニメーションの連動 再び先ほどのWindowにもどり、Functionに 「OnPlaySound」と設定してください。(Applyは忘れずに) これはSendMessageと同じような働きをしてくれます。 あとは、unitychanにAudioSourceを追加して PlayerControllerにOnPlaySound関数を追加すればボイスが 再生されるようになります。
  52. 52. ボイスを再生しよう Hierarchyビューのunitychanを選択してから InspectorビューのAddComponentをクリックして Audio->AudioSourceを追加します。 これで音がユニティちゃんの位置からなるようになります。
  53. 53. ボイスを再生しよう スクリプト全体はこちらから 最後に、OnPlaySound関数ををPlayerControllerに追加すれ ば声が再生されるようになります。 Eventを作成する際にObjectに設定したファイルが引数として 入ってきますので、それをそのまま再生するだけでよいです。
  54. 54. ボイスを再生しよう Winアニメーションも同じようにサウンドを設定してみましょう。
  55. 55. おまけ
  56. 56. やられアクションを入れてみる AnimatorビューにDamageステートを追加して MotionにはDAMAGE01を設定します。
  57. 57. やられアクションを入れてみる ParametersにInt型の Lifeを追加します。 すぐやられるようにLifeは1をセット Locomotionステートと Deadステートとの Transitionを繋いで Locomotion -> Deadの Conditionsを Life Equals 0 にします。
  58. 58. やられアクションを入れてみる スクリプト全体はこちらから OnCollisionEnterで、”Enemy”タグを持った何かにぶつかれば Lifeパラメータを一つ減らすようにします。
  59. 59. やられアニメーションのトリミング Assets->UnityChan->Animationsにある unitychan_DAMAGE01.fbxを選択して InspectorビューのAnimationsタブの中程にある 右側の画像のものを見つけてください。
  60. 60. やられアニメーションのトリミング 右側のつまみを操作して、Preview画面のキャラクターが倒れ ている状態になるようにします。 こうする事で、立ち上がるアニメーションは使わず、倒れたまま を維持する事ができるようになります。
  61. 61. やられアニメーションのトリミング Enemyタグを持つ何かにぶつかるとその場に倒れるようになり ました。 今回はトリミングで立ち上がる部分をカットしていますが、このま まだと倒れた状態で動きが停止してしまうので、気になるようで したら倒れた状態のステートも用意してあげると良いでしょう。
  62. 62. 終わり!

×