玉転がしゲームで学ぶunity入門

61
玉転がしゲームで学ぶ Unity入門 nakamura001 2011/05/15(2011/08/20更新)

Upload: nakamura001

Post on 16-Apr-2017

49.598 views

Category:

Education


1 download

TRANSCRIPT

Page 1: 玉転がしゲームで学ぶUnity入門

玉転がしゲームで学ぶUnity入門

nakamura001

2011/05/15(2011/08/20更新)

Page 2: 玉転がしゲームで学ぶUnity入門

※解説を聞きながら見る前提で作成しているスライドです。以下の動画と一緒にご覧下さい。

http://www.ustream.tv/recorded/14715477

Page 3: 玉転がしゲームで学ぶUnity入門

床を作る

Page 4: 玉転がしゲームで学ぶUnity入門

床を作る• HierarchyにCubeを追加

Page 5: 玉転がしゲームで学ぶUnity入門

床を作る• 名前を「Floor」に変更

Page 6: 玉転がしゲームで学ぶUnity入門

床を作る• Positionを 0, 0, 0 に変更

Page 7: 玉転がしゲームで学ぶUnity入門

床を作る• Scaleを 10, 1, 30 に変更

Page 8: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• ProjectにMaterialを追加

Page 9: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• 名前を「FloorMaterial」に変更

• 色を選択

Page 10: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• HierarchyのFloorにドラッグ

Page 11: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• 追加内容はここで確認できます

Page 12: 玉転がしゲームで学ぶUnity入門

ライトを追加

Page 13: 玉転がしゲームで学ぶUnity入門

ライトを追加• HierarchyにDirectional lightを追加

Page 14: 玉転がしゲームで学ぶUnity入門

ライトを追加

• 実際の照らされ具合を見ながら位置や回転を調整

• 例) Position -3, 9, -7、Rotation 38, 0, 0 など

Page 15: 玉転がしゲームで学ぶUnity入門

Player(玉)を作成

Page 16: 玉転がしゲームで学ぶUnity入門

玉を作成• HierarchyにSphereを追加

Page 17: 玉転がしゲームで学ぶUnity入門

玉を作成

• 名前を「Player」に変更

• Positionを 0, 3, -5 に変更

Page 18: 玉転がしゲームで学ぶUnity入門

マテリアルを作成

• ProjectにMaterialを追加

• 名前を「PlayerMaterial」に変更

Page 19: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• Projectにテクスチャ用の画像ファイルを追加

※玉が回転した時に分り易いものを作成しましょう

例えばこの様な画像 http://d.hatena.ne.jp/nakamura001/files/net.png

Page 20: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• PlayerMaterialにテクスチャを設定

Page 21: 玉転がしゲームで学ぶUnity入門

マテリアルを作成

• Playerにドラッグ

Page 22: 玉転がしゲームで学ぶUnity入門

カメラを設定

Page 23: 玉転がしゲームで学ぶUnity入門

カメラの設定

• MainCameraのPositionを 0, 6, -10 に変更

• Rotationを 40, 0, 0 に変更

Page 24: 玉転がしゲームで学ぶUnity入門

Player(玉)の動きを作る

Page 25: 玉転がしゲームで学ぶUnity入門

Playerの動きを作成• ProjectにJavaScriptを追加

Page 26: 玉転がしゲームで学ぶUnity入門

Playerの動きを作成

• 名前をPlayerActionに変更

• Playerにドラッグ

Page 27: 玉転がしゲームで学ぶUnity入門

JavaScriptを記述var power = 20.0;

function Update () {! var x = Input.GetAxis("Horizontal") * Time.deltaTime * power;! var z = Input.GetAxis("Vertical") * Time.deltaTime * power;! Debug.Log("x="+x+", z="+z);! transform.Translate(x, 0, z);}

Page 28: 玉転がしゲームで学ぶUnity入門

動かしてみよう

Page 29: 玉転がしゲームで学ぶUnity入門

動かしてみよう• ここの再生マークをクリックし、ゲームを開始

Page 30: 玉転がしゲームで学ぶUnity入門

動かしてみよう• ここに表示されます。カーソルキーで動かしてみましょう

Page 31: 玉転がしゲームで学ぶUnity入門

もうちょっとリアリティ欲しい

Page 32: 玉転がしゲームで学ぶUnity入門

物理エンジンを使おう

Page 33: 玉転がしゲームで学ぶUnity入門

物理エンジンの処理を追加

• Playerを選択した状態でRigidbodyを追加

Page 34: 玉転がしゲームで学ぶUnity入門

物理エンジン関連のPackageを取り込む

Projectの余白で右クリック、Import Package→Physic Materials

Page 35: 玉転がしゲームで学ぶUnity入門

物理エンジン関連のPackageを取り込む

• デフォルトのまま「import」

Page 36: 玉転がしゲームで学ぶUnity入門

物理特性の設定• IceをPlayerのSphere Colliderの

Materialにドラッグ

Page 37: 玉転がしゲームで学ぶUnity入門

JavaScriptを変更var power = 80.0;

function Update () {! var x = Input.GetAxis("Horizontal") * Time.deltaTime * power;! var z = Input.GetAxis("Vertical") * Time.deltaTime * power;! Debug.Log("x="+x+", z="+z);! rigidbody.AddForce(x, 0, z);}

Page 38: 玉転がしゲームで学ぶUnity入門

動かしてみよう

• ゲームを起動してカーソルを動かしてみましょう

Page 39: 玉転がしゲームで学ぶUnity入門

ジャンプさせてみよう

Page 40: 玉転がしゲームで学ぶUnity入門

JavaScriptを変更var power = 80.0;var jumpPower = 300.0;

function Update () {! var x = Input.GetAxis("Horizontal") * Time.deltaTime * power;! var z = Input.GetAxis("Vertical") * Time.deltaTime * power;! Debug.Log("x="+x+", z="+z);! rigidbody.AddForce(x, 0, z);! if (Input.GetButtonDown("Jump")) {! ! Debug.Log("Jump");! ! rigidbody.AddForce(0, jumpPower, 0);! }}

Page 41: 玉転がしゲームで学ぶUnity入門

動かしてみよう

• ゲームを起動した後にスペースキーを押してジャンプさせてみましょう

Page 42: 玉転がしゲームで学ぶUnity入門

ゴールを作成

Page 43: 玉転がしゲームで学ぶUnity入門

ゴールを作成• HierarchyにCubeを追加

• 名前を「Goal」に変更

• Positionを 0, 1.4, 0、Scaleを 2, 2, 2 に変更

Page 44: 玉転がしゲームで学ぶUnity入門

マテリアルを作成

• ProjectにMaterialを追加

• 名前を「GoalMaterial」に変更

Page 45: 玉転がしゲームで学ぶUnity入門

マテリアルを作成

• ShaderにParticles/Additiveを選択(Particles→ Additiveと選択)

• 色に赤を選択

Page 46: 玉転がしゲームで学ぶUnity入門

マテリアルを作成• GoalMaterialをGoalにドラッグ

Page 47: 玉転がしゲームで学ぶUnity入門

ゲームクリアのテキストを追加

Page 48: 玉転がしゲームで学ぶUnity入門

テキストを作成• GUI Textを作成。名前をGameClearに変更

Page 49: 玉転がしゲームで学ぶUnity入門

テキストの設定• Textを「GAME CLEAR」に変更

• Anchorを「middle center」に変更

• Font Sizeを「40」に変更

Page 50: 玉転がしゲームで学ぶUnity入門

GoalにJavaScriptを追加

Page 51: 玉転がしゲームで学ぶUnity入門

JavaScriptを追加• JavaScriptを追加

• 名前をGoalActionに変更

• Goalにドラッグ

Page 52: 玉転がしゲームで学ぶUnity入門

JavaScriptを記述private var player: GameObject;private var gameClear: GameObject;

function Start() {! player = GameObject.Find("Player");! gameClear = GameObject.Find("GameClear");! gameClear.active = false;}

function OnCollisionEnter(theCollision : Collision){! if(theCollision.gameObject.name == "Player"){! ! gameClear.active = true;! ! player.rigidbody.Sleep();! ! player.SendMessage("stop");! }}

Page 53: 玉転がしゲームで学ぶUnity入門

PlayerのJavaScriptを変更var power = 80.0;var jumpPower = 300.0;var stopFlag = false;

function Update () {! if (stopFlag) return;! var x = Input.GetAxis("Horizontal") * Time.deltaTime * power;! var z = Input.GetAxis("Vertical") * Time.deltaTime * power;! rigidbody.AddForce(x, 0, z);! if (Input.GetButtonDown("Fire1")) {! ! rigidbody.AddForce(0, jumpPower, 0);! ! Debug.Log("hoge");! }}

function stop() {! stopFlag = true;}

Page 54: 玉転がしゲームで学ぶUnity入門

おまけ

Page 55: 玉転がしゲームで学ぶUnity入門

GetAxis()の引数について

Page 56: 玉転がしゲームで学ぶUnity入門

GetAxis()の引数について• GetAxis("Horizontal")の Horizontal などの設定が行われている場所

Page 57: 玉転がしゲームで学ぶUnity入門

GetAxis()の引数について

Page 58: 玉転がしゲームで学ぶUnity入門

IDEでプログラミングする

Page 59: 玉転がしゲームで学ぶUnity入門

MonoDevelop

• UnityはMonoDevelopというC#など向けのIDEと連携する事が出来ます

• MonoDevelopはUnityをインストールした時に一緒にインストールされるので別途インストールする必要はありません

Page 60: 玉転がしゲームで学ぶUnity入門

MonoDevelopで使えるようにする

• Unityのメニューの Assets →

Sync MonoDevelop Project を選択するとMonoDevelopで使える様に成ります

Page 61: 玉転がしゲームで学ぶUnity入門

Macだと文字化け• MonoDevelopは現在のバージョンでは、

Macで文字化けします。以下のサイトを参考にフォントの設定を変更して下さい

MacのMonoDevelopの日本語表示の文字化けの直し方 - 強火で進めhttp://d.hatena.ne.jp/nakamura001/20110711/1310364725