unity講座資料 3dプラットフォームgame

71
第1章 UnityD入門 1 3DプラットフォームGame

Upload: mattun

Post on 13-Apr-2017

264 views

Category:

Business


0 download

TRANSCRIPT

Page 1: Unity講座資料 3dプラットフォームgame

第1章 Unity3D入門

1

3DプラットフォームGame

Page 2: Unity講座資料 3dプラットフォームgame

2

右クリックからImportNewAssets

Pleyerフォルダを選択

ドラッグ&ドロップでも可能

1節 テクスチャのインポート

インポートされたことが確認できる

Page 3: Unity講座資料 3dプラットフォームgame

3

Assets Viewの

Player →Materials →tre_uvを選択

Inspector Viewの

Textureの

Selectを選択

1節 テクスチャのインポート

Page 4: Unity講座資料 3dプラットフォームgame

4

Importされた左記ファイルを選択

適用されたことが確認できる

1節 テクスチャのインポート

Page 5: Unity講座資料 3dプラットフォームgame

5

Direction Lightを選択し、

Inspector Viewのパラメーターを設定する

2節 配置するオブジェクトの設定

Hierarchy Viewから

Create →3DObject →Planeを作成

!Inspector Viewのパラメーターを設定する

Page 6: Unity講座資料 3dプラットフォームgame

6

SenceにPlaneが作成されることが

確認できる

Assets Viewで

Create →Folderでフォルダを作成し

CharacterControllerSetupにリネーム

!Create →MaterialでMaterialを作成し、

FloorMatにリネーム

2節 配置するオブジェクトの設定

Page 7: Unity講座資料 3dプラットフォームgame

7

FloorMatを選択し、

Inspector ViewでAlvedeのカラーを変更する

MaterialをPlaneに

ドラッグ&ドロップすると

Scene上でPlaneの色が変更される

ことが確認できる

2節 配置するオブジェクトの設定

Page 8: Unity講座資料 3dプラットフォームgame

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節 配置するオブジェクトの設定

Page 9: Unity講座資料 3dプラットフォームgame

9

オブジェクトが配置されたことが 確認できる

Hierarchy Viewから

Create →3DObject →Planeを作成

inspector Viewのパラメーターを設定する

2節 配置するオブジェクトの設定

Page 10: Unity講座資料 3dプラットフォームgame

10

モデルを選択して、 SceneViewへドラッグ&ドロップ

Inspector Viewのパラメーターを設定する

!Animatorのチェックを外す

2節 配置するオブジェクトの設定

Page 11: Unity講座資料 3dプラットフォームgame

11

AddCompornent →physics →CharactorControllerを選択

inspector Viewのパラメーターを設定する

2節 配置するオブジェクトの設定

Page 12: Unity講座資料 3dプラットフォームgame

12

Assets Viewで

importNewAssets PlayerControllerSetup.csをインポート

ドラッグ&ドロップで追加可能

MainCameraを選択

!inspector Viewのパラメーターを設定する

!

追加した PlayerControllerSetup.csを

モデルにドラッグ&ドロップ

2節 配置するオブジェクトの設定

Page 13: Unity講座資料 3dプラットフォームgame

13

再生ボタンを選択

3Dモデル

が動いたー!

2節 配置するオブジェクトの設定

Page 14: Unity講座資料 3dプラットフォームgame

14

Assets Viewで

Create →Folderでフォルダを追加し、

Scenesにリネーム

File →Save SceneでSceneを保存

2節 配置するオブジェクトの設定

Page 15: Unity講座資料 3dプラットフォームgame

15

今回CharactorControllerという

Compornentを追加

2節 配置するオブジェクトの設定(解説1)

<説明> CharacterController は Rigidbdy による処理を持たなくてもコリジョンによって簡単に動きの制限を行

うことが可能です。 CharacterController は力には影響されず、Move 関数を呼び出した時のみ移動します。 そのときに移動

を行いますがコリジョンによって制限されます。(スロープと段差を変更して確認)

center キャラクターのカプセルに比例したトランスフォームの位置の中心

height キャラクターのカプセルの高さ

radius キャラクターのカプセルの半径

skinWidth 他Colliderとの接触時のめり込み具合

Min Move Distance 指定された値未満ではCharacterが移動しない

slopeLimit スロープを登ることができる最大角度

stepOffset 段差を登ることができる最大角度

Page 16: Unity講座資料 3dプラットフォームgame

16

各変数を設定する

Start関数でCharactorController

のコンポーネントを取得する

2節 配置するオブジェクトの設定(解説2)

Page 17: Unity講座資料 3dプラットフォームgame

17

マイフレームキャラクターの移動量を求めてキャラクターを移動させている。 character.isGroundedで地面に着地しているかどうか判断している。

その後キャラクターが地面に着地している時に前後の移動量やジャンプによる 移動量を求めている。

2節 配置するオブジェクトの設定(解説2)

Page 18: Unity講座資料 3dプラットフォームgame

18

次に重力によって落下する移動量を加えている。 CharactorControllerのMove関数に計算移動量を与えるとキャラクターが移動する。

この時、地面や障害物との衝突、段差やスロープへ侵入できるかの判断をした上で 移動してくれる。 最後にキー入力でキャラクターを旋回させている。 Move関数の戻り値としてCollisionFlag型の値を返す。

この値をチェックすることで、移動の結果にキャラクターが何かに接触したかどうか 判断することができる。

2節 配置するオブジェクトの設定(解説2)

Page 19: Unity講座資料 3dプラットフォームgame

19

3節 キャラクターの状態に合わせて動かす

モデルを選択

Inspector Viewの

Rigタブをクリック

Animation TypeをHumaroidへ変更

Configureボタンをクリック

→未保存のシーンを保存するかどうか 確認されるのでSaveボタンをクリック

Avatorが作成されていることが

確認できる。

Page 20: Unity講座資料 3dプラットフォームgame

20

Headを選択する

Left Eyeを選択する

Noneを選択する

(同様にRight Eyeも行う)

Apply →Doneを選択

3節 キャラクターの状態に合わせて動かす

Page 21: Unity講座資料 3dプラットフォームgame

21

Animationのタブを選択

idleを選択

→名前をtg_idleにリネーム

→Strat 0, End 75に変更

→Loop Timeにチェック

→Loop Poseにチェック

(Start Endが変更できない場合は左記に

Clamp Rangeをクリック)

アニメーションデータリストが 表示されていることが確認できる。

設定が終わったら、Applyをクリック

3節 キャラクターの状態に合わせて動かす

Page 22: Unity講座資料 3dプラットフォームgame

22

同様に他のアニメーションも左記の ように変更する

tg_slidingのみは左記のように

BasedUponをFeetに変更する。

またLoopTimeにチェックは入れない。(BasedUponをFeet。

これにより足を基準にしてルートの高さが 補正されます)

3節 キャラクターの状態に合わせて動かす

Page 23: Unity講座資料 3dプラットフォームgame

23

Playerフォルダの中で

Create →Animator Controlleを作成し、

TreasureAnimatorにリネーム!TreasureAnimatorをダブルクリック

Animator Controlleのウィンドウが

開かれることが確認できる。

テキストの書いてある四角い枠をStateと呼び、Animationの状態を表示する。

EntryからAnimationが始まり、Exitまで行くとAnimationが終わり、再びEntryに戻る。

Any Stateは、今現在どのAnimationにいるかに関わらず特定のAnimationを実行したい時に使います。

3節 キャラクターの状態に合わせて動かす

Page 24: Unity講座資料 3dプラットフォームgame

24

AnimatorControlleのウィンドウで

右クリックして Create State →Empty

New Stateを選択し、

Inspector ViewもMotionを選択し、

Motionの中から

tg_idleを選択する。

3節 キャラクターの状態に合わせて動かす

Page 25: Unity講座資料 3dプラットフォームgame

25

AnimatorControlleのウィンドウで

Idleが追加されたことが確認できる。

モデルを選択し、Inspector Viewの

Animatorにチェックを入れる

Controllerに先ほど作成した、

TresureAnimatorを追加する。

3節 キャラクターの状態に合わせて動かす

Page 26: Unity講座資料 3dプラットフォームgame

26

再生ボタンを選択

アニメーションが適用

れたーーーー!

3節 キャラクターの状態に合わせて動かす

Page 27: Unity講座資料 3dプラットフォームgame

27

Inspector Viewで

Blend TreeをForwardにリネーム

AnimatorControlleのウィンドウで

右クリックして Create State →From New Blend Tree

AnimatorControlleのウィンドウの

左上にあるParametersのタブを選択し、

BlendからSpeedにリネーム

3節 キャラクターの状態に合わせて動かす

Page 28: Unity講座資料 3dプラットフォームgame

28

Forwardをダブルクリックすると

Forwardの中のBlendTreeが表示される

Inspector Viewの

List is Emptyの+ボタンをクリックし、

Add Motion Fieldを選択

◯ボタンをクリックし、モーションを左記の ように追加する。

3節 キャラクターの状態に合わせて動かす

Page 29: Unity講座資料 3dプラットフォームgame

29

AnimatorControlleのウィンドウで

モーションが3つ追加されたことが 確認できる。

Blend Treeを選択し、右下の

プレビューから再生ボタンをクリック Blend TreeのSpeedバーを変更し、

モーションが変更されることが 確認できる。

3節 キャラクターの状態に合わせて動かす

Page 30: Unity講座資料 3dプラットフォームgame

30

4節 トランジションで動きをつけてみる

AnimatorControlleのウィンドウで

Idleを右クリックし、

Make Transitionを選択

左記のように、IdleからForwardへ

追加すし、作成されたTransitionを選択

Inspector Viewの

Conditionsで+ボタンをクリック

Speedを選択

Greaterを選択

値を0.1に変更する。

Page 31: Unity講座資料 3dプラットフォームgame

31

AnimatorControlleのウィンドウで

Forwardを右クリックし、

Make Transitionを選択

左記のように、ForwardからIdleへ

追加し、作成されたTransitionを選択

4節 トランジションで動きをつけてみる

Inspector Viewの

Conditionsで+ボタンをクリック

Speedを選択

Lessを選択

値を0.1に変更する。

Page 32: Unity講座資料 3dプラットフォームgame

32

キャラクターの状態に合わせて動かす

左上のParametersを選択し、

Boolを2つ追加

先ほどと同様に、Stateを作成し、

Jumpにリネーム

Inspector Viewの

Motionにtg_jumpのモーションを追加する。

4節 トランジションで動きをつけてみる

左記のようにリネームし、 IsGroundにチェックを入れる

Page 33: Unity講座資料 3dプラットフォームgame

33

キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみるAnimatorControlleのウィンドウで

AnyStateを右クリックし、

Make Transitionを選択

左記のように、AnyStateからJumpへ

追加し、作成されたTransitionを選択

Inspector Viewの

ConditionsでSpeedをIsGroundに変更

+でIsJumpも追加する

Page 34: Unity講座資料 3dプラットフォームgame

34

キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみるAnimatorControlleのウィンドウで

AnyStateを右クリックし、

Make Transitionを選択

左記のように、JumpからForwardへ

追加し、作成されたTransitionを選択

Inspector Viewの

Conditionsの

+でIsGroundを追加する

Page 35: Unity講座資料 3dプラットフォームgame

35

キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみる

左上のParametersを選択し、Boolとfloat

の2つ追加

左記のようにリネームし、 IsGroundにチェックを入れる

先ほどと同様に、Stateを作成し、

Slidingにリネーム

Inspector Viewの

Motionにtg_slidingのモーションを追加する。

Page 36: Unity講座資料 3dプラットフォームgame

36

キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみる

先ほどと同様に3つのTransitionを作成

Make Transitionを選択

Inspector Viewの

Conditionsの

+で左記の様に追加する

左記に関しては2つ目の Transition

Page 37: Unity講座資料 3dプラットフォームgame

37

キャラクターの状態に合わせて動かす4節 トランジションで動きをつけてみる

先ほどと同様に2つのTransitionを作成

Make Transitionを選択

先ほどと同様に、Stateを作成し、

Backwardにリネーム

Inspector Viewの

Motionにtg_wark_backのモーションを追加する。

Inspector Viewの

Conditionsの

+で左記の様に追加する

Page 38: Unity講座資料 3dプラットフォームgame

38

キャラクターの状態に合わせて動かす5節 スクリプトでキャラクターを動かす

Assets Viewで

importNewAssets PlayerAnimationSetup.csをインポート

ドラッグ&ドロップで追加可能

追加した PlayerAnimationSetup.csを

モデルにドラッグ&ドロップ

PlayerAnimationSetup.csが

追加されたことが確認できる

Animation TransitionのHas Exit Timeは全て

チェックを外す

Page 39: Unity講座資料 3dプラットフォームgame

39

再生ボタンを選択

全てのアニメーション

適用されたーーーー!

5節 スクリプトでキャラクターを動かす

Page 40: Unity講座資料 3dプラットフォームgame

40

キャラクターの状態に合わせて動かす

現在のコードだと、スライディング した時にくぐることができない。

PlayerAnimationSetupの編集

コードを書いてみよう。 !①コライダーの変数設定

4節 トランジションで動きをつけてみる

Page 41: Unity講座資料 3dプラットフォームgame

41

キャラクターの状態に合わせて動かす

②コライダーの中心位置や高さを取得

③アニメーション状態の チェックと位置設定

Page 42: Unity講座資料 3dプラットフォームgame

42

再生ボタンを選択

スライディングで通り

けできたー!

5節 スクリプトでキャラクターを動かす

Page 43: Unity講座資料 3dプラットフォームgame

43

キャラクターの状態に合わせて動かす

Player2フォルダから

u_manとu_man_texを

インポートする。

u_manを選択し、Inspector Viewの

Rigタグを選択

Animation TypeをHumanoidを選択

Applyを選択

Page 44: Unity講座資料 3dプラットフォームgame

44

キャラクターの状態に合わせて動かす

SceneViewでエラーとなっている為、

エラーを解消する。

エラーが解消される

Pose →Enforce T-Poseを選択

Appry →Doneを選択

Page 45: Unity講座資料 3dプラットフォームgame

45

キャラクターの状態に合わせて動かす

モーションのDefaultTakeを

spine_roll_rightにリネーム

モデルを選択し、Inspector Viewの

Animatorタブを選択

ClipsのDefaultTakeを選択

Mirrorにチェック

→Applyを選択

Page 46: Unity講座資料 3dプラットフォームgame

46

キャラクターの状態に合わせて動かす

Playerフォルダを選択

→Create →Avatar Maskを選択

Avatar MaskをSpineMaskにリネーム

Inspector Viewで

SpineMaskのHumanoidを選択

→胴体以外をクリックし、 胴体だけを緑色として残す

Page 47: Unity講座資料 3dプラットフォームgame

47

キャラクターの状態に合わせて動かす

AnimatorControlleのウィンドウで

Layersタブをクリック

→+ボタンを押してLayer追加

→Sub Layerにリネーム

設定ボタンをクリック MaskにSpineMaskを追加

TreasureAnimatorをクリック。

Parametersタブをクリック

→+ボタンを押してfloat追加

→Directionにリネーム

Page 48: Unity講座資料 3dプラットフォームgame

48

キャラクターの状態に合わせて動かす

AnimatorControlleのウィンドウで

右クリックして Create State →From New Blend Tree →SpineRollにリネーム

SpineRollをダブルクリック

Page 49: Unity講座資料 3dプラットフォームgame

49

キャラクターの状態に合わせて動かす

Blend Treeをクリック

+ボタンを押し、Motionを2つ追加

→左上のしきい値を−1に変更

ParameterをDirectionに変更

Page 50: Unity講座資料 3dプラットフォームgame

50

キャラクターの状態に合わせて動かす

Motionにspine_roll_leftと

spine_roll_rightを追加

Motionが追加されたことが確認できる。

Page 51: Unity講座資料 3dプラットフォームgame

51

キャラクターの状態に合わせて動かす

スクリプトを修正する

Page 52: Unity講座資料 3dプラットフォームgame

52

再生ボタンを選択

左右に傾くアニメーシ

ンが追加できたー!

5節 スクリプトでキャラクターを動かす

Page 53: Unity講座資料 3dプラットフォームgame

53

ステージを作成する

Assets Viewのウィンドウで

Create →Folder Prefabsにリネーム

モデルを選択し、Prefabsフォルダに

ドラッグ&ドロップ

モデルを選択し、Playerにリネーム

Page 54: Unity講座資料 3dプラットフォームgame

54

左記のような確認画面がでるので、 importボタンをクリック

ステージを作成する

Assets Viewのウィンドウで

Create →import Package →CustomPakage →Platform-Stage.unitypackageを選択

Page 55: Unity講座資料 3dプラットフォームgame

55

Platformsが追加されたことが確認できる

File →NewSceneで新しいシーン作成

ステージを作成する

File →SaveSceneでシーンを保存

Stageというシーン名で保存

Page 56: Unity講座資料 3dプラットフォームgame

56

Platformsフォルダの中の

Prefabsを選択

→Hierarchy Viewへドラッグ&ドロップ

Stageが追加されたことが

確認できる

ステージを作成する

Page 57: Unity講座資料 3dプラットフォームgame

57

Lightを選択し、Inspector Viewの

Intensityの値を0.2に変更し、

明るさの変更を行う。

ステージを作成するAssets Viewのウィンドウで

Standard Assetsを追加する

→Script/CameraScript SmooFollow.jsをMain Cameraへ

ドラッグ&ドロップ

カメラを選択し、Inspector Viewの

Distanceの値を6に変更

Page 58: Unity講座資料 3dプラットフォームgame

58

薄暗くなったことが確認できる。 (任意な明るさでもOK)

ステージを作成する

Assets Viewのウィンドウに

GameController.csと

SoundEffect.csを追加

Page 59: Unity講座資料 3dプラットフォームgame

59

スクリプトが増えてきたので一旦 Assetsフォルダ配下にScriptフォルダ

を作成 →.csのスクリプトを全てこのフォルダに

格納しておく

Hierarchy Viewで

Create →Create Empty →SpawnPointにリネーム

→Positionを左記へ変更

ステージを作成する

Page 60: Unity講座資料 3dプラットフォームgame

60

GameControllerを選択し、Inspector Viewの

PlayerにPlayerを

SpawnPointにSpawnPointをセット

ステージを作成する

Hierarchy Viewで

Create →Create Empty →GameControllerにリネーム

GameControlle.csをGameControllerへ

ドラッグ&ドロップ

Page 61: Unity講座資料 3dプラットフォームgame

61

ステージを作成する

Assets Viewのウィンドウに

Soundsフォルダをインポート

Hierarchy Viewで

Create →Create Empty →SoundControllerにリネーム

SoundController.csをSoundControllerへ

ドラッグ&ドロップ

Page 62: Unity講座資料 3dプラットフォームgame

62

AddComponent →Audio →AudioListenerを追加

!同様に AudioSourceも追加

ステージを作成する

SoundControllerを選択し、

Inspector Viewの

SeClearにse_clearを

SeScreamにse_screamをセット

Page 63: Unity講座資料 3dプラットフォームgame

63

AudioSouceの

AudioCripにbgm_dangeonを追加

ステージを作成する

MainCameraを選択し

AudioListenerのチェックを外す

Page 64: Unity講座資料 3dプラットフォームgame

64

再生ボタンを選択

ステージにPlayerが配置

され、なんだかゲーム

ぽくなってきたーーー

ー!

5節 スクリプトでキャラクターを動かす

Page 65: Unity講座資料 3dプラットフォームgame

65

!Hierarchy Viewの

Stage →TrapRotation を選択

Inspector Viewの

AddComportnent →Miscellaneous →Animationを選択

ステージを作成する

ツールバーの Window →Animationを選択

Page 66: Unity講座資料 3dプラットフォームgame

66

Createをクリック

Platformsフォルダの中に

TrapRotate.animという名前で

保存

ステージを作成する

AddPropertyをクリック

Transform →Rotationの+ボタンをクリック

Page 67: Unity講座資料 3dプラットフォームgame

67

TrapRotation:Rotationを展開する。

ステージを作成する

Rotation.yの値を360に変更

再生し、適用されているか確認

Page 68: Unity講座資料 3dプラットフォームgame

68

先ほどと同様にアニメーションを追加する。

ステージを作成する

TrapMovingを選択

→AddCompornent →Miscellaneous →Animation

Createをクリック

Platformsフォルダの中に

TrapUpDown.animという名前で

保存

Play Automaticallyのチェックを外す

Page 69: Unity講座資料 3dプラットフォームgame

69

TrapMovingを展開し、

Position.yを5.5に

Samplesを90に変更

ステージを作成する

AddPropertyをクリック

Transform →Transformの+ボタンをクリック

Page 70: Unity講座資料 3dプラットフォームgame

70

90フレームにカーソルを合わせて 右クリック →AddKey →Position.xを5.5に変更

◯ボタンを押してAnimationを終了

ステージを作成する

TrapUpDownを選択

WrapModeをLoopに選択

Page 71: Unity講座資料 3dプラットフォームgame

71

再生ボタンを選択

ステージ完成!!!

Animationのスピードなどを変更して難易度を変えてみよう!

ステージを作成する