unity講座資料 3dプラットフォームgame
TRANSCRIPT
第1章 Unity3D入門
1
3DプラットフォームGame
2
右クリックからImportNewAssets
Pleyerフォルダを選択
ドラッグ&ドロップでも可能
1節 テクスチャのインポート
インポートされたことが確認できる
3
Assets Viewの
Player →Materials →tre_uvを選択
Inspector Viewの
Textureの
Selectを選択
1節 テクスチャのインポート
4
Importされた左記ファイルを選択
適用されたことが確認できる
1節 テクスチャのインポート
5
Direction Lightを選択し、
Inspector Viewのパラメーターを設定する
2節 配置するオブジェクトの設定
Hierarchy Viewから
Create →3DObject →Planeを作成
!Inspector Viewのパラメーターを設定する
6
SenceにPlaneが作成されることが
確認できる
Assets Viewで
Create →Folderでフォルダを作成し
CharacterControllerSetupにリネーム
!Create →MaterialでMaterialを作成し、
FloorMatにリネーム
2節 配置するオブジェクトの設定
7
FloorMatを選択し、
Inspector ViewでAlvedeのカラーを変更する
MaterialをPlaneに
ドラッグ&ドロップすると
Scene上でPlaneの色が変更される
ことが確認できる
2節 配置するオブジェクトの設定
8
Hierarchy Viewから
Create →3DObject →Cubeを作成
inspector Viewのパラメーターを設定する
同様に左記パラメーターのCubeを作成する
Position Scale
0,-0.25,-3 1,1,1-1,0,-3 1,1,1
-2,0.25,-3 1,1,1 -3.5,0.5,-3 2,1,1
-3.5,0.5,-1.5 2,1,1 0,1.5,2 4,1,1
2節 配置するオブジェクトの設定
9
オブジェクトが配置されたことが 確認できる
Hierarchy Viewから
Create →3DObject →Planeを作成
inspector Viewのパラメーターを設定する
2節 配置するオブジェクトの設定
10
モデルを選択して、 SceneViewへドラッグ&ドロップ
Inspector Viewのパラメーターを設定する
!Animatorのチェックを外す
2節 配置するオブジェクトの設定
11
AddCompornent →physics →CharactorControllerを選択
inspector Viewのパラメーターを設定する
2節 配置するオブジェクトの設定
12
Assets Viewで
importNewAssets PlayerControllerSetup.csをインポート
ドラッグ&ドロップで追加可能
MainCameraを選択
!inspector Viewのパラメーターを設定する
!
追加した PlayerControllerSetup.csを
モデルにドラッグ&ドロップ
2節 配置するオブジェクトの設定
13
再生ボタンを選択
3Dモデル
が動いたー!
2節 配置するオブジェクトの設定
14
Assets Viewで
Create →Folderでフォルダを追加し、
Scenesにリネーム
File →Save SceneでSceneを保存
2節 配置するオブジェクトの設定
15
今回CharactorControllerという
Compornentを追加
2節 配置するオブジェクトの設定(解説1)
<説明> CharacterController は Rigidbdy による処理を持たなくてもコリジョンによって簡単に動きの制限を行
うことが可能です。 CharacterController は力には影響されず、Move 関数を呼び出した時のみ移動します。 そのときに移動
を行いますがコリジョンによって制限されます。(スロープと段差を変更して確認)
center キャラクターのカプセルに比例したトランスフォームの位置の中心
height キャラクターのカプセルの高さ
radius キャラクターのカプセルの半径
skinWidth 他Colliderとの接触時のめり込み具合
Min Move Distance 指定された値未満ではCharacterが移動しない
slopeLimit スロープを登ることができる最大角度
stepOffset 段差を登ることができる最大角度
16
各変数を設定する
Start関数でCharactorController
のコンポーネントを取得する
2節 配置するオブジェクトの設定(解説2)
17
マイフレームキャラクターの移動量を求めてキャラクターを移動させている。 character.isGroundedで地面に着地しているかどうか判断している。
その後キャラクターが地面に着地している時に前後の移動量やジャンプによる 移動量を求めている。
2節 配置するオブジェクトの設定(解説2)
18
次に重力によって落下する移動量を加えている。 CharactorControllerのMove関数に計算移動量を与えるとキャラクターが移動する。
この時、地面や障害物との衝突、段差やスロープへ侵入できるかの判断をした上で 移動してくれる。 最後にキー入力でキャラクターを旋回させている。 Move関数の戻り値としてCollisionFlag型の値を返す。
この値をチェックすることで、移動の結果にキャラクターが何かに接触したかどうか 判断することができる。
2節 配置するオブジェクトの設定(解説2)
19
3節 キャラクターの状態に合わせて動かす
モデルを選択
Inspector Viewの
Rigタブをクリック
Animation TypeをHumaroidへ変更
Configureボタンをクリック
→未保存のシーンを保存するかどうか 確認されるのでSaveボタンをクリック
Avatorが作成されていることが
確認できる。
20
Headを選択する
Left Eyeを選択する
Noneを選択する
(同様にRight Eyeも行う)
Apply →Doneを選択
3節 キャラクターの状態に合わせて動かす
21
Animationのタブを選択
idleを選択
→名前をtg_idleにリネーム
→Strat 0, End 75に変更
→Loop Timeにチェック
→Loop Poseにチェック
(Start Endが変更できない場合は左記に
Clamp Rangeをクリック)
アニメーションデータリストが 表示されていることが確認できる。
設定が終わったら、Applyをクリック
3節 キャラクターの状態に合わせて動かす
22
同様に他のアニメーションも左記の ように変更する
tg_slidingのみは左記のように
BasedUponをFeetに変更する。
またLoopTimeにチェックは入れない。(BasedUponをFeet。
これにより足を基準にしてルートの高さが 補正されます)
3節 キャラクターの状態に合わせて動かす
23
Playerフォルダの中で
Create →Animator Controlleを作成し、
TreasureAnimatorにリネーム!TreasureAnimatorをダブルクリック
Animator Controlleのウィンドウが
開かれることが確認できる。
テキストの書いてある四角い枠をStateと呼び、Animationの状態を表示する。
EntryからAnimationが始まり、Exitまで行くとAnimationが終わり、再びEntryに戻る。
Any Stateは、今現在どのAnimationにいるかに関わらず特定のAnimationを実行したい時に使います。
3節 キャラクターの状態に合わせて動かす
24
AnimatorControlleのウィンドウで
右クリックして Create State →Empty
New Stateを選択し、
Inspector ViewもMotionを選択し、
Motionの中から
tg_idleを選択する。
3節 キャラクターの状態に合わせて動かす
25
AnimatorControlleのウィンドウで
Idleが追加されたことが確認できる。
モデルを選択し、Inspector Viewの
Animatorにチェックを入れる
Controllerに先ほど作成した、
TresureAnimatorを追加する。
3節 キャラクターの状態に合わせて動かす
26
再生ボタンを選択
アニメーションが適用
さ
れたーーーー!
3節 キャラクターの状態に合わせて動かす
27
Inspector Viewで
Blend TreeをForwardにリネーム
AnimatorControlleのウィンドウで
右クリックして Create State →From New Blend Tree
AnimatorControlleのウィンドウの
左上にあるParametersのタブを選択し、
BlendからSpeedにリネーム
3節 キャラクターの状態に合わせて動かす
28
Forwardをダブルクリックすると
Forwardの中のBlendTreeが表示される
Inspector Viewの
List is Emptyの+ボタンをクリックし、
Add Motion Fieldを選択
◯ボタンをクリックし、モーションを左記の ように追加する。
3節 キャラクターの状態に合わせて動かす
29
AnimatorControlleのウィンドウで
モーションが3つ追加されたことが 確認できる。
Blend Treeを選択し、右下の
プレビューから再生ボタンをクリック Blend TreeのSpeedバーを変更し、
モーションが変更されることが 確認できる。
3節 キャラクターの状態に合わせて動かす
30
4節 トランジションで動きをつけてみる
AnimatorControlleのウィンドウで
Idleを右クリックし、
Make Transitionを選択
左記のように、IdleからForwardへ
追加すし、作成されたTransitionを選択
Inspector Viewの
Conditionsで+ボタンをクリック
Speedを選択
Greaterを選択
値を0.1に変更する。
31
AnimatorControlleのウィンドウで
Forwardを右クリックし、
Make Transitionを選択
左記のように、ForwardからIdleへ
追加し、作成されたTransitionを選択
4節 トランジションで動きをつけてみる
Inspector Viewの
Conditionsで+ボタンをクリック
Speedを選択
Lessを選択
値を0.1に変更する。
32
キャラクターの状態に合わせて動かす
左上のParametersを選択し、
Boolを2つ追加
先ほどと同様に、Stateを作成し、
Jumpにリネーム
Inspector Viewの
Motionにtg_jumpのモーションを追加する。
4節 トランジションで動きをつけてみる
左記のようにリネームし、 IsGroundにチェックを入れる
33
キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみるAnimatorControlleのウィンドウで
AnyStateを右クリックし、
Make Transitionを選択
左記のように、AnyStateからJumpへ
追加し、作成されたTransitionを選択
Inspector Viewの
ConditionsでSpeedをIsGroundに変更
+でIsJumpも追加する
34
キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみるAnimatorControlleのウィンドウで
AnyStateを右クリックし、
Make Transitionを選択
左記のように、JumpからForwardへ
追加し、作成されたTransitionを選択
Inspector Viewの
Conditionsの
+でIsGroundを追加する
35
キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみる
左上のParametersを選択し、Boolとfloat
の2つ追加
左記のようにリネームし、 IsGroundにチェックを入れる
先ほどと同様に、Stateを作成し、
Slidingにリネーム
Inspector Viewの
Motionにtg_slidingのモーションを追加する。
36
キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみる
先ほどと同様に3つのTransitionを作成
Make Transitionを選択
Inspector Viewの
Conditionsの
+で左記の様に追加する
左記に関しては2つ目の Transition
37
キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみる
先ほどと同様に2つのTransitionを作成
Make Transitionを選択
先ほどと同様に、Stateを作成し、
Backwardにリネーム
Inspector Viewの
Motionにtg_wark_backのモーションを追加する。
Inspector Viewの
Conditionsの
+で左記の様に追加する
38
キャラクターの状態に合わせて動かす5節 スクリプトでキャラクターを動かす
Assets Viewで
importNewAssets PlayerAnimationSetup.csをインポート
ドラッグ&ドロップで追加可能
追加した PlayerAnimationSetup.csを
モデルにドラッグ&ドロップ
PlayerAnimationSetup.csが
追加されたことが確認できる
Animation TransitionのHas Exit Timeは全て
チェックを外す
39
再生ボタンを選択
全てのアニメーション
が
適用されたーーーー!
5節 スクリプトでキャラクターを動かす
40
キャラクターの状態に合わせて動かす
現在のコードだと、スライディング した時にくぐることができない。
PlayerAnimationSetupの編集
コードを書いてみよう。 !①コライダーの変数設定
4節 トランジションで動きをつけてみる
41
キャラクターの状態に合わせて動かす
②コライダーの中心位置や高さを取得
③アニメーション状態の チェックと位置設定
42
再生ボタンを選択
スライディングで通り
抜
けできたー!
5節 スクリプトでキャラクターを動かす
43
キャラクターの状態に合わせて動かす
Player2フォルダから
u_manとu_man_texを
インポートする。
u_manを選択し、Inspector Viewの
Rigタグを選択
Animation TypeをHumanoidを選択
Applyを選択
44
キャラクターの状態に合わせて動かす
SceneViewでエラーとなっている為、
エラーを解消する。
エラーが解消される
Pose →Enforce T-Poseを選択
Appry →Doneを選択
45
キャラクターの状態に合わせて動かす
モーションのDefaultTakeを
spine_roll_rightにリネーム
モデルを選択し、Inspector Viewの
Animatorタブを選択
ClipsのDefaultTakeを選択
Mirrorにチェック
→Applyを選択
46
キャラクターの状態に合わせて動かす
Playerフォルダを選択
→Create →Avatar Maskを選択
Avatar MaskをSpineMaskにリネーム
Inspector Viewで
SpineMaskのHumanoidを選択
→胴体以外をクリックし、 胴体だけを緑色として残す
47
キャラクターの状態に合わせて動かす
AnimatorControlleのウィンドウで
Layersタブをクリック
→+ボタンを押してLayer追加
→Sub Layerにリネーム
設定ボタンをクリック MaskにSpineMaskを追加
TreasureAnimatorをクリック。
Parametersタブをクリック
→+ボタンを押してfloat追加
→Directionにリネーム
48
キャラクターの状態に合わせて動かす
AnimatorControlleのウィンドウで
右クリックして Create State →From New Blend Tree →SpineRollにリネーム
SpineRollをダブルクリック
49
キャラクターの状態に合わせて動かす
Blend Treeをクリック
+ボタンを押し、Motionを2つ追加
→左上のしきい値を−1に変更
ParameterをDirectionに変更
50
キャラクターの状態に合わせて動かす
Motionにspine_roll_leftと
spine_roll_rightを追加
Motionが追加されたことが確認できる。
51
キャラクターの状態に合わせて動かす
スクリプトを修正する
52
再生ボタンを選択
左右に傾くアニメーシ
ョ
ンが追加できたー!
5節 スクリプトでキャラクターを動かす
53
ステージを作成する
Assets Viewのウィンドウで
Create →Folder Prefabsにリネーム
モデルを選択し、Prefabsフォルダに
ドラッグ&ドロップ
モデルを選択し、Playerにリネーム
54
左記のような確認画面がでるので、 importボタンをクリック
ステージを作成する
Assets Viewのウィンドウで
Create →import Package →CustomPakage →Platform-Stage.unitypackageを選択
55
Platformsが追加されたことが確認できる
File →NewSceneで新しいシーン作成
ステージを作成する
File →SaveSceneでシーンを保存
Stageというシーン名で保存
56
Platformsフォルダの中の
Prefabsを選択
→Hierarchy Viewへドラッグ&ドロップ
Stageが追加されたことが
確認できる
ステージを作成する
57
Lightを選択し、Inspector Viewの
Intensityの値を0.2に変更し、
明るさの変更を行う。
ステージを作成するAssets Viewのウィンドウで
Standard Assetsを追加する
→Script/CameraScript SmooFollow.jsをMain Cameraへ
ドラッグ&ドロップ
カメラを選択し、Inspector Viewの
Distanceの値を6に変更
58
薄暗くなったことが確認できる。 (任意な明るさでもOK)
ステージを作成する
Assets Viewのウィンドウに
GameController.csと
SoundEffect.csを追加
59
スクリプトが増えてきたので一旦 Assetsフォルダ配下にScriptフォルダ
を作成 →.csのスクリプトを全てこのフォルダに
格納しておく
Hierarchy Viewで
Create →Create Empty →SpawnPointにリネーム
→Positionを左記へ変更
ステージを作成する
60
GameControllerを選択し、Inspector Viewの
PlayerにPlayerを
SpawnPointにSpawnPointをセット
ステージを作成する
Hierarchy Viewで
Create →Create Empty →GameControllerにリネーム
GameControlle.csをGameControllerへ
ドラッグ&ドロップ
61
ステージを作成する
Assets Viewのウィンドウに
Soundsフォルダをインポート
Hierarchy Viewで
Create →Create Empty →SoundControllerにリネーム
SoundController.csをSoundControllerへ
ドラッグ&ドロップ
62
AddComponent →Audio →AudioListenerを追加
!同様に AudioSourceも追加
ステージを作成する
SoundControllerを選択し、
Inspector Viewの
SeClearにse_clearを
SeScreamにse_screamをセット
63
AudioSouceの
AudioCripにbgm_dangeonを追加
ステージを作成する
MainCameraを選択し
AudioListenerのチェックを外す
64
再生ボタンを選択
ステージにPlayerが配置
され、なんだかゲーム
っ
ぽくなってきたーーー
ー!
5節 スクリプトでキャラクターを動かす
65
!Hierarchy Viewの
Stage →TrapRotation を選択
Inspector Viewの
AddComportnent →Miscellaneous →Animationを選択
ステージを作成する
ツールバーの Window →Animationを選択
66
Createをクリック
Platformsフォルダの中に
TrapRotate.animという名前で
保存
ステージを作成する
AddPropertyをクリック
Transform →Rotationの+ボタンをクリック
67
TrapRotation:Rotationを展開する。
ステージを作成する
Rotation.yの値を360に変更
再生し、適用されているか確認
68
先ほどと同様にアニメーションを追加する。
ステージを作成する
TrapMovingを選択
→AddCompornent →Miscellaneous →Animation
Createをクリック
Platformsフォルダの中に
TrapUpDown.animという名前で
保存
Play Automaticallyのチェックを外す
69
TrapMovingを展開し、
Position.yを5.5に
Samplesを90に変更
ステージを作成する
AddPropertyをクリック
Transform →Transformの+ボタンをクリック
70
90フレームにカーソルを合わせて 右クリック →AddKey →Position.xを5.5に変更
◯ボタンを押してAnimationを終了
ステージを作成する
TrapUpDownを選択
WrapModeをLoopに選択
71
再生ボタンを選択
ステージ完成!!!
Animationのスピードなどを変更して難易度を変えてみよう!
ステージを作成する