• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

Unity講習会(初級)

on

  • 10 views

 

Statistics

Views

Total Views
10
Views on SlideShare
10
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via SlideShare as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Unity講習会(初級) Unity講習会(初級) Presentation Transcript

    • Unity講習会(初級) 1
    • おしながき 1.  Unityの概要 2.  Unityの用語解説 3.  操作練習 4.  物を作って配置してみる 5.  自分で操作できるキャラクタを作成する 6.  FPSカメラを作る 7.  TPSカメラを作る(発展課題) 2
    • 概要 3
    • Unityとは? ユニティ・テクノロジーズ社製のゲームエンジン ・クロスプラットフォームな開発が可能  -UnityEditor自体がWin/Macで動作  -PC/Web/iOS/Android/コンシューマ機向けにビルドができる ・(プログラミング)初心者からプロまで使える  -非プログラマとプログラマが共同で使えるツール  -コードを全く書かずにゲームを作れる(やろうと思えば)  -バージョン管理にも対応(けどブランチをマージするとコンフリクトしまくる) 4
    • Unityのライセンス •  Free版 –  機能が一部制限されている(プロトタイピングには十分) –  作成したゲームは自由に公開、販売できる –  ただし収益が年間$10万を超えるならPro版が必要 •  Pro版 –  Unityの機能をフルで使える –  凝ったゲームを作るなら必須 –  高い(買い切りが約16万円、月額プランでも月8,100円) –  1ヶ月の試用ライセンスあり(試用以外の用途でビルドは禁止) 5
    • Pro版の機能(一部) •  起動時のダサいロゴを変更できる(タイトルロゴ変更) •  MecanimでIKが使える(モデルのアニメーションがそれっぽくなる) •  オーディオにエフェクトが設定できる •  オクルージョンカリングが使用できる(描画時の負荷軽減) •  ポストエフェクトが使用できる(HDR、被写界深度、SSAOとか設定できる) •  プロファイラが使える(描画やスクリプトの実行時間やメモリ使用量のモニタ) •  ネイティブプラグインのインポートができる    (Oculus Rift開発するのに必要) 6
    • 基礎編 7
    • Unityの用語解説 8
    • Scene ・ゲームを構成する空間 ・画面に描画される領域 9
    • GameObject ・Scene中に存在する物体全て ・ゲームはGameObjectの相互作用で成り立つ 10
    • Component ・モジュール化された機能のこと ・GameObjectに貼り付けて使う 11
    • 12
    • Unity開発の流れ GameObjectをSceneに配置する ↓ Componentをくっつける(場合によっては自作) ↓ 実際に動かして調整 13
    • 実際に操作してみよう 14
    • New Projectを作成 File→New Project... 15
    • 作成ウィザード  Skyboxes.unityPackage  Terrain Assets.unityPackage  にチェックをする(プリインのリソースの読み込み) 16
    • 作成直後 17
    • ゲームビュー 実行ボタンを押すと実際にここでゲームが動く ビルド不要でデバッグプレイができる 18
    • シーンビュー Sceneの様子を表示する 実行中はゲームビューと連動する D&DでGameObjectの設置・移動ができる 19
    • プロジェクトビュー ゲームプロジェクトで扱うリソース一覧 要するにファイルエクスプローラー 20
    • ヒエラルキービュー Sceneに配置されたGameObjectと その親子(階層)関係を表示する (ゲーム中に存在するオブジェクトは全部ここに出てくる) 21
    • インスペクタービュー 詳細設定画面 ・GameObjectが持つComponentの管理 ・Componentの設定 ・UnityのProject設定 22
    • シーンビューを選択 23
    • シーンビューでのカメラ説明 http://docs-jp.unity3d.com/ Documentation/Manual/SceneView40.html 24
    • 簡単なフィールドを作る Planeを配置して床にする 25
    • Transform ・GameObjectの位置姿勢を表すComponent ・全てのGameObjectに必ず付与されている Planeをカメラに映る範囲に移動させておく Position=(0,0,0) Rotation=(0,0,0) Scale =(2,1,2) 26
    • ここで一回実行してみる 薄暗い板が表示される 27
    • 光源を設定 •  Directional Lightを設置する –  太陽光と同じ役割をする光源 –  設置位置によらずシーン内の全てを照らす 28
    • Directional Light ヒエラルキービューから直接作れる 29
    • 光源設置後 フィールドが明るくなっているはず 30
    • 影の設定 31
    • いろいろ配置してみる 32
    • いろいろ配置してみる •  Cube(箱) •  Capsule(カプセル) •  Sphere(球体) •  Cylinder(円柱) を適当に生成してPlane上に配置してみる (Planeを選択した状態で生成すると配置が楽) 33
    • 配置の操作方法 34
    • 再生してみる 物体が動いてくれない 35
    • 物理演算を有効にする Rigidbodyコンポーネントをつける 36
    • もう一回再生してみる Rigidbodyを付けた物体だけが動く 37
    • 物理演算とゲーム •  物理演算を有効にすると物理法則に従った動きになる –  摩擦・重力・空気抵抗を受ける –  Collider(当たり判定)に衝突する –  衝突すればバウンドするし、運動量の伝達も起きる –  物理法則に反する動きをさせると挙動が気持ち悪くなる -特に慣性の法則を無視した動きをさせるといろいろ破綻する 38
    • プレイヤと物理演算 •  操作対象に物理演算を適応するのは止めた方が良い •  当たり判定が欲しいだけなら専用のComponentがある –  CharacterController •  プレイヤを作成するのに特化したComponent •  移動メソッドの提供 •  当たり判定の自動計算 39
    • Sceneを保存する •  GameObjectの配置やComponent設定が保存される 40
    • パブリッシュ 成果物をビルドして公開しよう 41
    • ビルド設定 ビルド対象に含めるSceneを登録する 現在のSceneを追加するならAdd Current 42
    • 対象プラットフォームを選ぶ Web向け→ Win/Mac向け→ 43
    • ビルド先を決める 44
    • ビルドできた 45
    • ね、簡単でしょう? 46
    • 実践編 47
    • Terrainでフィールドを作る 48
    • Terrainでフィールドを作る 地形生成機能を使う  GameObject→Create Other→Terrain 49
    • Terrain生成直後 50
    • 光源を設定 •  Directional Lightを設置する –  太陽光と同じ役割をする光源 –  設置位置によらずシーン内の全てを照らす 51
    • Directional Light GameObject -> Create Others -> Directional Light 52
    • 光源の設定 光の向き、明るさ、色などを調整できる 53
    • Terrainのサイズを変える Terrainのインスペクタービューから変更する デフォルトでは2km四方 でかすぎるので200x200くらいに 54
    • 地形の高さを上下 Raose / Lower Terrain ・左クリックした場所の地形が盛り上がる ・Shift + 左クリックでは逆に窪む 55
    • 地形の高さを える Paint height ・heightで指定した高さにそろえる ・Shiftを押しながらクリックでその地点の高さをスポイト ・Flattenを押すと指定高度でTerrainを平らにする 56
    • 地形を滑らかにする Smooth height ・選択範囲の傾斜を滑らかにする 57
    • 地形にテクスチャを貼る 標準Assetからテクスチャをインポートをする 58
    • テクスチャ読み込み後 59
    • テクスチャを貼る PaintTexture ・最初は何もテクスチャが設定されていない ・Edit Textureでテクスチャを追加 60
    • テクスチャの追加 61
    • テクスチャの選択 •  現在ロードされているテクスチャ一覧が出てくる 62
    • テクスチャ設定後 最初に設定したテクスチャが全面に貼られる 63
    • テクスチャを更に追加 •  同じ要領でテクスチャをTerrainに追加 •  2枚目以降のテクスチャは左クリックで塗っていく 64
    • 木を植える •  テクスチャと同じ手順で木のモデルを設定 65
    • 木を植える •  左クリックで植える •  Shift+左クリックで除去 •  設置の密度などの設定はスライダで変更 66
    • 草を植える •  木を植える方法と同じなので省略 •  草不可避 67
    • (おまけ)影のBake •  Directional Lightは影のBakeができる •  処理には結構時間がかかる 68
    • Skyboxを設定する •  空の模様のこと •  標準Assetにいくつか用意されている 69
    • Skyboxの設定方法 2パターンある ・グローバルで設定 ・カメラ単位で設定 今回はグローバルで設定する 70
    • RenderSettings ・Edit -> RenderSettings ・インスペクタービューが設定画面になる 71
    • Skybox設定後 72
    • (補足)テクスチャとマテリアル •  テクスチャ(Texture) –  単純な画像リソース –  拡張子は画像形式( jpg / png / gif ...) •  マテリアル(Material) –  材質(シェーダ)とテクスチャをセットにしたもの –  Unityの独自規格ファイルで保存される 73
    • 自機をつくる 74
    • 用意したTerrainと自機がこちら Assets -> Import Package -> Custom Package 事前配布した「Example.unityPackage」をインポート 75
    • シーンを開く プロジェクトビュー Assets -> Scene1 76
    • 実行するとこうなる 77
    • Character Controllerをつける Component -> Physics -> Character Controller インスペクタービューから 直接Addしてもよい 78
    • 移動スクリプトを貼り付ける プロジェクトビュー -> Script -> PlayerMove インスペクタービューへD&D 79
    • 実行するとカプセルが動く WASD または カーソルキーで移動する 80
    • InputManager 81
    • キーアサインを後から変更できる ゲーム起動時にユーザが自由にキーアサインを変更できる 82
    • スクリプトの解説 •  C#、Unity Script、Booに対応 –  Mono 2.10(C# 4.0、.NET 4.0相当) •  Mono Behaviourを継承したクラスはComponentとなる –  クラス名とファイル名は一致している必要がある 83
    • スクリプトの編集方法 Assets -> Sync MonoDevelop Project これでC#のプロジェクトファイルが作られる 84
    • 移動スクリプト 85
    • Start Start() GameObjectの生成が完了後、 最初にUpdateが実行される直前に1度だけ実行される 86
    • Update Update() 各スクリプトで1フレームに1度実行される ゲーム中の挙動は基本的にここに記述する 秒間の実行回数(FPS)はブレることを前提にしておくこと 87
    • フレーム ・ゲーム内での処理が実行される時間単位   -毎フレーム、ゲームの処理と描画が行われる ・デフォルトでは60fpsぐらい(1秒間に60フレーム)   -フレームはブレるのでぴったり60fpsはでない ・前フレームからの経過時間はTime.deltaTimeでわかる 88
    • GetComponent GetComponent 指定したGameObjectが持つComponentを取得する (取得に失敗した場合はnull) 今回は自分自身が持つCharacterControllerへの参照を 取得している 89
    • Input Input 入力情報を取得する時に使う GetAxis  :仮想ジョイスティックの入力を取得 GetButton:ボタン(キー入力のエイリアス)の状態を取得 GetKey  :キーボードのキー状態を取得 Updateの中で実行しないと正しく取得できない GetKeyよりもGetButtonを使おう 90
    • SimpleMove CharacterContoller.SimpleMove(Vector3 speed) 対象のGameObjectを水平に移動させる (重力が自動的に加算され入力のY値は無視される) 当たり判定(Collider)にぶつかるとそこで止まってくれる 91
    • SimpleMoveとMove •  SimpleMove –  水平方向の移動のみを対象(ジャンプはSimpleMoveでは実装できない) –  重力は自動加算される –  たぶんプロトタイピング用だと思う –  入力値は速度ベクトル[m/s] •  Move –  3次元空間での移動を対象 –  ジャンプ等の立体的な動きをさせることができる –  重力は自動加算されない(自分で計算する必要がある) –  入力値は移動量ベクトル[m] 92
    • FPSカメラ 93
    • スクリプトを貼り付ける FPSCameraスクリプトをカメラに貼り付ける 94
    • 実行したらカメラが動く マウスの移動に追従してカメラが回転する 95
    • FPSCameraスクリプト 96
    • Publicフィールドの扱い 97
    • インスペクタービューに表示される publicフィールドは インスペクタービューから書き換えることができる (ゲーム実行中に直接書き換えることもできる) 98
    • このスクリプトの肝はここ 99
    • Quaternion •  四次元数(x,y,z,w) •  姿勢を表現することができる(軸と角度) •  UnityのQuaternionは構造体(値型扱い) •  Transform.rotationにはQuaternionが入っている –  インスペクタービューにはRotationをオイラー角に変換した物が表示されている Quaternionを使うと回転処理が簡単に書ける 100
    • Quaternionと回転 Vector3 と Quaternion   を掛け算するとベクトルが回転する Quaternion と Quaternion を掛け算すると回転が合成される [回転後のVector3]  =[Quaternion] [元のVector3] [合成後のQuaternion]=[Quaternion] [元のQuaternion] 演算は順番は掛け算の順番が考慮される (前から掛けないとダメ) 101
    • Quaternionでいろいろ Quaternion.AngleAxis( 回転角 , 回転軸)で回転させる 102
    • どう回転させているか カメラの角度= 横回転 ✕ 縦回転 ✕ 初期回転角度 103
    • 自機とカメラを一緒に動かす 104
    • やり方1 GameObjectの親子関係を使う ・自機と一緒にくっついて動いてくれる ・自機が回転するとカメラごと回転してしまう(オススメしない) 105
    • やり方2 スクリプトで自ら追尾させる ・コードを書かないといけないので割りと面倒 ・柔軟性は高い こっちの方法でやります 106
    • 用意したものがこちら これをカメラに貼り付けて下さい 既に貼り付けてあるFPSCameraは 右クリック→Remove Componentで外して下さい Assets/Script/Answer/FPSCameraFollowTransform.cs 107
    • スクリプトの解説 カメラに対象のTransformを入れる変数を作る  (publicフィールドにすること) Assets/Script/Answer/FPSCameraFollowTransform.cs108
    • スクリプトの解説 Updateの中で座標を書き換える Assets/Script/Answer/FPSCameraFollowTransform.cs109
    • ターゲットを登録する インスペクタービューから対象をD&Dで登録 110
    • 実行する 実行するとちゃんとカメラが自機を追尾する   →でも操作に違和感がある? 111
    • 自機の操作を改善する カメラの向きと進行方向がズレているのが原因 前進キーを押したらカメラの方向へ進むようにする Assets/Script/Answer/PlayerMoveWithCamera.cs これをPlayerCapsuleに貼り付けて下さい (既に付いているPlayerMoveはRemoveする) 112
    • 自機にカメラを登録 113
    • カメラの方向にすすむようになった 114
    • スクリプトの解説 カメラの向きと自機の移動方向を合わせるために 自機にカメラのTransformを登録できるようにする 115
    • スクリプトの解説 カメラの向きを基準に入力値のベクトルの向きを変換 116
    • 演習時間 •  発表でカットしたスライドを見る(配布資料を読む) •  TPSカメラにする •  自機の向きが進行方向を向くようにする •  Terrainで自分で地形を作る •  ジャンプを実装する Assets/Script/Answer以下にいくつか実装例を置いておきました117
    • まとめ •  今回の内容は初級から中級くらいの内容 •  公式ドキュメントがかなり詳しい •  時間が無くて話せていない要素が多い –  Prefab (GameObjectをプロジェクトビューに保存できる) –  Mecanim(アニメーション管理、再生) –  スクリプト作成の応用編(Prefabの動的な生成とか) 118