SlideShare a Scribd company logo
学生のためのUnity勉強会

Unityを使ったゲーム開発を体験しよう
自己紹介
✤

和泉 信生 (いずみ しのぶ)!

✤

崇城大学 情報学部 情報学科 助教!

✤

izumi@cis.sojo-u.ac.jp !

✤

@shinobu_shiva!

✤

http://www.cis.sojo-u.ac.jp/~izumi
とよすすいぞくかん
http://toyosui.jp/
CUBELE+
https://itunes.apple.com/jp/app/cubele+/id417145026
熊本Apps!
熊本からデジタルコンテンツを世界へ

https://www.facebook.com/kumamotoapps
熊本Apps!
https://www.facebook.com/kumamotoapps

・コンシューマ向けサービスの構築に興味のある

・学生、社会人、企業が集まり、
・知識・ノウハウを共有しながら、
・世界のユーザーに利用されるモノをリリースしていく、
・「地域コミュニティブランド」
著書の紹介

http://www.amazon.co.jp/dp/4877832742
中高生のためのUnity勉強会

第1部 Unityを触ってみる
第1部 Unityを触ってみる

✤

第1部Unityの基本的な使い方や各部分の名称を覚えるために、
Unityを触りながら3D世界を操作してみます
http://unity3d.com/
http://unity3d.com/japan/
Unityとは?
✤

3D/2Dゲームを作るための統合開発環境及びゲームエンジン!

✤

Windows, Mac, ウェブブラウザ で動作するゲームを作成できる

iPhone, Android, Xbox 360, PS3もサポート(さらにサポート拡大中)!

✤

ゲーム開発の大衆化を目指し、

ヨーロッパを中心に多くのユーザを獲得!

✤

誰でも無料で使える(プロライセンス限定の機能が少しある)
今日の資料
✤

資料

https://drive.google.com/file/d/0BybrejWDbtQeFZoTVJjeTVzRGs/edit?usp=sharing


✤

プロジェクトファイル

https://drive.google.com/file/d/0BybrejWDbtQaEtjdWdvR2ZkSm8/edit?usp=sharing
とりあえず開いてみよう!

c:¥ユーザー¥パブリック¥パブリックのドキュメント
¥Unity Projects¥AngryBots¥Assets¥AngryBots.unity
起動!
プレイしてみよう

w, a, s, d (カーソル)=移動

マウス(プレス) = 視点移動(発砲)
各部名称

メニュー

いろいろな機能(Windowsは位置が違う)
シーンビュー

3Dの作業を行うビュー
ゲームビュー
ゲーム実行時の画面
シーン中のオブジェクト
プロジェクトのアセット

ヒエラルキービュー

オブジェクトやアセットの設定
プロジェクトビュー

インスペクタ
各部名称
メニュー

いろいろな機能(Windowsは位置が違う)

シーンビュー

3Dの作業を行うビュー

ゲームビュー

ゲーム実行時の画面

ヒエラルキービュー

シーン中のオブジェクト

プロジェクトビュー

プロジェクトのアセット

インスペクタ

オブジェクトやアセットの設定
ギズモ
シーンビューで見ている向きを表す

クリックするとその方向から見ることが出来る
移動ツール (画面左上)
選択した物体やビューの移動方法を選択

ビュー

移動

物体移動

物体回転

物体拡縮

{

✤

シーンビューの中でクリックすると物体が選択できる
プレイツール (画面中央)
✤

ゲームのプレイ、停止、一時停止、ステップ実行

プレイ

一時停止

ステップ実行

青くなっている状態でゲーム実行中
プレイをもう一度クリックすると停止
カメラの移動
✤

Altキーを押しながら!

操作に慣れよう!

✤

マウス左ボタン → 回転!

✤

マウス中ボタン → 移動!

✤

マウス右ボタン → 拡大縮小 (スクロールでもOK)!

✤

何かを選択して f キー → 物体に合わせた位置に移動!

✤

スペースキー → マウスが指している画面をフルスクリーン化
初めてのゲーム作成
✤

新規プロジェクトの作成

✤

メニューから File → New Project... を選択
初めてのゲーム作成
✤

プロジェクトを作成する位置を選び、名前をつけてCreate Project

✤

(例) C:¥Documents and Settings¥Izumiken¥My DocumenHelloUnity
灰色の部分はそれぞれ異なる

全角文字は使わないで!
初期画面
WindowsとMacではメニューの位置が少し違う
オブジェクトを作る
✤

メニューから GameObject → Create Other → Cube を選択

Cubeが作成された
オブジェクトを作る
✤

メニューから GameObject → Create Other → Plane を選択

Planeが作成された
オブジェクトを動かす
✤

Cubeを選択

 ヒエラルキービューから選択 / シーンビューでクリック

✤

移動ツールから移動を選択
ショートカット q,w,e,r

✤

緑(上向き)のハンドルをドラッグして上に移動

ゲームビューには何も表示されていない
カメラの位置と向きを調節
✤

Main Cameraを選択

シーンビューでカメラギズモをクリック / ヒエラルキービューから

✤

上手くカメラを移動してください
暗い、、、
ライトの追加
✤

メニューから GameObject → Create Other → Point Light を選択
インスペクタ
✤

選択しているオブジェクトの設定
Color - 色

Intensity - 光の強さ

Range - 光の届く距離

Point Lightを

選択した状態
試しに赤く強くしてみた

プレイをクリックしてみよう
、、、特に変化なし
剛体にしてみよう
✤

RigidBody = 剛体 = 重力に作用する物体
✤
✤

Cubeを選択
メニューから Component → Physics → Rigidbody を選択
Rigidbodyが

追加された

プレイを

クリックすると、、、
落ちた?
シーンの保存
✤

メニューから File → Save Scene を選択
✤

名前を入力して Saveをクリック
演習
✤

プレイすると球体が3つ地面に落ちて

転がっていくゲームを作成してください!
!

(ヒント)
✤

Sphereを3つ作成し、

Rigidbodyにしてください!

✤

Planeを傾けてください
プロジェクトとシーン
✤

プロジェクト

Unityにおけるゲーム開発の単位

全ての部品はプロジェクト内に保存する

1つのフォルダーとして管理!

✤

シーン

ゲームの1つのステージやスタートメニューなど
注意!

Unityが扱うファイルをUnityの外で移動しちゃダメ!
オブジェクトを作る
✤

メニューから GameObject → Create Other → Cube を選択

Cubeが作成された
Hierarchy (階層)ビュー

✤

ゲーム中に存在する全ての GameObject が表示されている!

✤

初期状態ではMain Cameraだけが存在する!

✤

Cubeやカメラ、ライトなど全てGameObject
Inspector(インスペクタ)ビュー

✤

選択したGameObjectの属性を表示!

✤

複数のComponentを保持!

✤

編集可能
UnityのGameObject
✤

GameObjectは基本情報と複数のComponentを持っている!

✤

どんなComponentを持つかでGameObjectの機能が決まる

GameObject
(基本属性) 名前、レイヤ、タグ等

Transform : 位置、回転、サイズ
MeshRenderer : 描画方法
MeshFilter : 3次元の形状
BoxCollider : 箱型の衝突判定

Transformは

全てのGameObjectに

必ず存在する
Componentの値設定
✤

インスペクタで値を変更することが出来る!
✤

TransformコンポーネントのPosition値を変更してみよう!

!
✤

シーンビューでの変更がインスペクタに反映される!
✤

Cubeをシーンビューで移動や回転、拡大すると

Transformコンポーネントの値が変化することを確認しよう
Cubeを原点に移動
✤

Cubeをヒエラルキービューで選択して、インスペクタからTransform
コンポーネントのPosition値を原点(0, 0, 0)に設定しよう
中高生のためのUnity勉強会

第2部 Unityで2Dゲームをつくろう!
情報学部 情報学科

和泉 信生
第2部 Unityで2Dゲームをつくろう!

✤

第2部ではUnityで2Dゲームを作成しながら基本的な操作や使い方、
簡単なプログラムを書くことで様々な機能が追加できることを知って
もらいます
ハングリーキャット

ネコを飛ばして

ネズミにぶつけて消すゲーム
プロジェクトファイルのダウンロード

✤

URL ∼ からダウンロードして解凍!

✤

解凍日本語が入っていないフォルダの場所においてください
とりあえず遊んでみよう

メニューから

File → Open Project… を選択

HungryCatを選択して

Open Project をクリック
プロジェクトが開いた
完成番のシーンを開く

プロジェクトビューで

Game-Compをダブルクリック
Maximize on Play (プレイ時に最大化)

Maximize on Play (プレイ時に最大化)を有効化しておく
プレイ!

① マウスで左クリックして引っ張る!
② 離すとネコが飛び出す
柱や的に命中すると得点を獲得

全部のネズミを倒したらゲームクリア
ゲームクリア!
自分で作ってみる!

プロジェクトビューで

Gameをダブルクリック
何も配置されていないシーンが表示された
このプロジェクトの使い方1
この2つ(中身も)は変更しない
このプロジェクトの使い方2

ゲームに使う部品(プレハブ)
このプロジェクトの使い方3
スクリプト(プログラム)

後で中身を記述して使います
このプロジェクトの使い方4
音声ファイル

(効果音に使います)
猫シューターを配置しよう!

Cat Shooter プレハブを

ドラッグして配置

プレハブ 

= ゲーム内で使うものを再利用できるようにまとめたもの
猫シューターが配置できた!

プレイすると猫が飛ばせます

(倒す敵がいないけど、、、)
プレイをもう一度クリックして

止めましょう(ボタンが灰色になるのを確認)
木(障害物)を置いてみる

Tree プレハブを

ドラッグして配置
移動や回転をさせてステージを作る
青い丸4つで囲まれた

枠の中をクリックすると移動します

青い丸のカドの少し外側をクリックすると

回転します(カーソルが変化)
ステージ完成!

プレイして動作確認してみよう
柱を壊すと得点が!
敵キャラクターを配置する

Mouse プレハブを

ドラッグして配置
Mouseプレハブ
インスペクターを見てみる

Mouse Behaviorコンポーネント!
このコンポーネント(スクリプト)に

猫があたった時の

処理を記述して行きます。
プロジェクトビューで

Mouse Behaviorをダブルクリック

エディタが起動
スクリプト(プログラム)
✤

ゲーム内での様々な処理はスクリプトを記述することで実現できます!
✤

得点、ダメージ、音を鳴らす、猫を打ち出す、etc…!

✤

今日は猫がネズミにあたった時の処理を記述します!

✤

UnityではC#, Javascript, Boo(Python) から言語を選んで使えます!
✤

この講義ではC#で記述します
スクリプト(プログラム)

この部分に処理を書いていきます
猫があたったら

ネズミが消えるようにする
public void GetDamage(){	

!

	

 	


Destroy (gameObject);	


!

}
なぜここに書くの?

猫が当たるとGetDamageの中(波括弧が開いて閉じる間)の処理

が実行されるように、事前にプログラムを組んでいるからです
メソッド

スクリプト内では様々な命令を記述することで処理をさせます

Destroy (gameObject);
ここではDestroyという命令を使っています

メソッドと呼びます

このような命令のことを
引数(ひきすう)
Destroy (gameObject);
メソッドにはその命令を実行するのに必要なモノや情報が

渡される場合があります(渡されない場合もあります)

引数と呼びます!

このようなものを



引数は(丸括弧)の間に書きます!
複数ある場合は

,(カンマ)で区切って記述します
Destroyメソッド

Destroy (gameObject);
破棄する命令です

Destroyメソッドは引数で受け取ったものを
ここで渡している

gameObject は


このスクリプトが付いているゲーム内のオブジェクトを指し示しています
最後にある ; は何?

Destroy (gameObject);

;

最後にある (セミコロン)は一つの命令の終わりを表す区切りです
スクリプトの保存
スクリプトを書いたら忘れずに保存しましょう!
Ctrl + s (Ctrlキーを押しながらsを押す)で保存できます

未保存

保存済み
Unityにもどる

右下に丸いインジケーターが回っているときは

コンパイル(プログラムの解析)を行っているので

少し待ちましょう
プログラムが間違えているとき

プログラムを間違えると(文法間違えなど)

左下に赤い字で間違いが指摘されます
メッセージを読んでプログラムを修正しましょう
プレイしてみましょう!

猫がネズミに当たると消えた?
ネズミを倒すと得点画面
敵を倒したらポイントを獲得しよう!

public void GetDamage(){ 	

!

	

 	

 Destroy (gameObject);	

 Pointメソッドに100を引数として渡す!
	

 	

!

}

Point (100);	


(*Pointメソッドはすでに提供してあります)
プレイしてみましょう!

猫がネズミに当たると得点獲得!
敵を倒したら音を鳴らそう!
public class MouseBehavior: MonoBehaviour {	

!

	


public AudioClip destroySound;	


!

	

 public void GetDamage(){ 	

!

	

 	

 Destroy (gameObject);	

	

 	

 Point (100);	

!

	

 }

鳴らす音を持っておく

変数を作成
変数(へんすう)
public AudioClip destroySound;
プログラム中で値や参照などを保持する

名前のついた箱のようなもの

destroySound

型が設定される

変数には

型によって変数に入れることができるものの種類が限定される
変数(へんすう)
public

AudioClip

公開範囲

型

destroySound;

変数名

公開範囲はここでは難しいので詳しい説明を省略しますが

変数にpublicとつけておくと


Unityのインスペクターで値を設定できる

ようになります
インスペクターを確認

Mouseを選択
作成した変数が表示された
音声ファイルを変数に設定

Destroy (音声ファイル)を

ドラッグして設定
音を鳴らすメソッドを記述
public AudioClip destroySound;	

!
public void GetDamage(){	

!
	

	

	

!
}

AudioSource.PlayClipAtPoint(destroySound, Vector3.zero);	

Destroy (gameObject);	

Point (100);	


AudioSource が持っている PlayClipAtPoint というメソッドに

鳴らしたい音が入っている destroySound 変数と

Vector3.zero (3次元空間の原点を表す値)を

引数として渡す

難しいので今はなんとなくで、、、
プレイしてみましょう!

ネズミを倒すと音がなる!
大きいネズミをおいてみる

BigMouseにもDestroy音声を設定

大きいネズミは2回当たらないと

たおせないようにしたい!
ネズミに体力をもたせよう!
public class MouseBehavior: MonoBehaviour {	

!
	

 public AudioClip destroySound;	

!

	

 public int vital = 1;	

!
	


public void GetDamage(){	


体力を持っておくための変数を作成

(初期の値を1にしておく)
変数への値の代入(だいにゅう)
1

vital = 1;
vital

変数に値を入れることを代入するという

スクリプト中の = は

右側の値を左側に代入することを表す
あたったら1減らす
!
	

!

public void GetDamage(){	


	

 	

 vital = vital - 1;	

!
	

	

	

!
	


	

	

	

}	


AudioSource.PlayClipAtPoint(destroySound, Vector3.zero);	

Destroy (gameObject);	

Point (100);
変数から1減らすとは?
vital = vital - 1;
1-1→0
1
vital

0
vital

取り出して 1 を引いて また 入れる
条件分岐
条件を満たしているか満たしていないかで

処理をわける
vitalの値が 0 より大きければ → 死なない
vitalの値が 0 以下ならば → 死ぬ
if 文による条件分岐
public void GetDamage(){	

	

 	

	

	

 	

 vital = vital - 1;	


!

	

 	

 if(vital <= 0){	

!
	

	

	


	

	

	


	

	

	


	


	


}	


	


}

AudioSource.PlayClipAtPoint(destroySound, Vector3.zero);	

Destroy (gameObject);	

Point (100);
if 文による条件分岐
if(vital <= 0) {	



  //条件を満たすとこの部分に書いてある処理が実行される


}
vitalの値が 0より小さいか0の時、

波括弧で囲まれた部分の処理を実行する

左辺と右辺をくらべて
<= 小さいか同じ
>= 大きいか同じ
> 大きい
< 小さい
== 同じ
!= 違う
BigMouse の vital を2に設定

2に設定
Mouseのvitalは1になっていることを確認しておきましょう
BigMouse の得点を多くしたい!
public class MouseBehavior: MonoBehaviour {	

!
	

 public AudioClip destroySound;	

!
	

 public int vital = 1;	


得点を持っておく変数を作成

	

 public int point = 100;	

!
	

	

	

!
	

!
	

	

	

	

	


public void GetDamage(){	

	

	

	

 vital = vital - 1;	

	


if(vital <= 0){	


	

	


	

	


AudioSource.PlayClipAtPoint(destroySound, Vector3.zero);	

Destroy (gameObject);	


	

 	

 Point (
	

 }	

}

point );	

変数の値で得点を追加
pointの値が設定できるようになった

Point の値を 1000に設定
動作確認!

大きいネズミを倒したら1000ポイント!
倒せなかった時の処理
倒せなかった時にも得点を獲得したり音を鳴らしたりしたい!
if(vital <= 0){	

!
	

 AudioSource.PlayClipAtPoint(destroySound, Vector3.zero);	

	

 Destroy (gameObject);	

	

 Point (point);	


else {	

	

 Point (point / 10);	

}
}

倒せなくても当たったら

10分の1のポイントを獲得

elseの内部には if の条件が成り立たなかった時に

実行する処理を記述する
!
	


public AudioClip destroySound; 	


	

 public AudioClip crashSound;	

!
	

	

!
	

	

	

!
	

!
	

	

	

	

	

	

	

	


public int vital = 1;	

public int point = 100;	


音を持っておく変数

public void GetDamage(){	

	

	

	

 vital = vital - 1;	

	


if(vital <= 0){	


	

	

	

	

	


	

	

	

}
	


	

 	

	

 }	

}

AudioSource.PlayClipAtPoint(destroySound, Vector3.zero);	

Destroy (gameObject);	

Point (point);	

else {	

Point (point / 10);	


音の再生

AudioSource.PlayClipAtPoint(crashSound, Vector3.zero);
BigMouseとMouseに音を設定

音を設定
完成!

自由にステージを作ってみましょう!
自分で書いた絵を使ってみよう!
Photoshopなど背景が透明な絵をかけるソフトであれば何でもいいです

http://pixlr.com/editor/
今日はブラウザ上で絵がかけるサービスを使ってやってみます

「新しい画像を作成」をクリック
絵を描く

「透明」にチェックしてOKをクリック
適当に絵を描く
絵を保存
メニューから ファイル→保存

フォーマットで PNGを選択

OKをクリック
絵を保存

デスクトップなど分かりやすいところに保存

(ファイル名はアルファベットで)
ファイルをインポート

Unityのプロジェクトビューに

ファイルをドロップ
ファイルのインポート設定

② Sprite Mode で Multipleを選択
③ Sprite Editorをクリック

① 取り込んだファイルを選択
スプライトの設定

使いたい範囲を囲んで Trim をクリック
スプライトの保存
Windowを閉じようとすると

適用するか聞かれるので

Applyをクリックして適用
スプライトをシーンに入れて

位置と大きさを調整
敵として使うための設定
① 名前をMyEnemyにする

② Tag で Wall を選択

(自由に名づけてよい)

③ Sorting Layer で Character を選択
必要なコンポーネントを付加
メニューから

Component → Physics 2D → Box Collider 2D
メニューから

Component → Physics 2D → Rigidbody 2D
1

Add Componentから

Enemy Behavior, Mouse Behaviorを追加
音やPoint, Vitalの値を設定
自作キャラが敵になった!
作った敵キャラをプレハブにする
プレハブにすると再利用できるようになります

ドラッグ
あとは自由に!
グローバルゲームジャム
2014

熊本会場に

参加しませんか?
https://sites.google.com/site/ggjkumamoto2013/
質問はこちらまで
✤

崇城大学情報学部

和泉助教 の部屋(研究室)!

✤

izumi@cis.sojo-u.ac.jp !

✤

@shinobu_shiva!

✤

http://www.cis.sojo-u.ac.jp/~izumi
mail address

More Related Content

PPTX
ゲームツクール資料第7回 Unity x EveryPlayでプレイ動画を共有しよう。
PDF
Unityティーチャートレーニングデイ -認定アソシエイト編-
PPTX
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
PPTX
20140508 在校生向けUnity&AR講座
PDF
【 #Unity会 】このUnityがすごい2015年版
PDF
プログラミング講座
PDF
中高校生対象プログラミング講座Part1
PPTX
Unity勉強会ハンズオン
ゲームツクール資料第7回 Unity x EveryPlayでプレイ動画を共有しよう。
Unityティーチャートレーニングデイ -認定アソシエイト編-
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
20140508 在校生向けUnity&AR講座
【 #Unity会 】このUnityがすごい2015年版
プログラミング講座
中高校生対象プログラミング講座Part1
Unity勉強会ハンズオン

Similar to [崇城大学][熊本Apps!] 学生のためのUnity勉強会 (20)

KEY
第8回Unity勉強会 Unityサウンド入門編 と サウンドワークショップ事例 Tech buzz8 Unity Study 20120927 tanaka
PDF
UnityLecture @Kyushu University
PDF
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
PPTX
ゲームツクール!第11回 エディター拡張してみよう
PDF
【Unity道場 幕張スペシャル3】「Playground」を魔改造!? ゲームデザイン授業への活用
PDF
Kuug 第1回
PDF
Unityで覚えるC#
PPTX
はじめてのUnity教室 講義用ppt
PDF
UnityとBlenderハンズオン第10章
PDF
Unityで作るiOSゲームアプリ
PPTX
Unity2015_No7_~Unity2D~
ODP
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
PDF
中高校生対象プログラミング講座Part2
PPTX
猫でもわかるUnreal Engine4
KEY
Unityの夕べ in Fukuoka
PDF
Unityで横スクロールアクションゲームを作ってみる(第2回unity初心者勉強会)
PDF
Unity2015_No2~Terrain~
PPTX
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
PPTX
SIG-Audio#6 プラグインを書かなくてもここまで出来る!Unityサウンド
PPTX
はじめてのUnity 改
第8回Unity勉強会 Unityサウンド入門編 と サウンドワークショップ事例 Tech buzz8 Unity Study 20120927 tanaka
UnityLecture @Kyushu University
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
ゲームツクール!第11回 エディター拡張してみよう
【Unity道場 幕張スペシャル3】「Playground」を魔改造!? ゲームデザイン授業への活用
Kuug 第1回
Unityで覚えるC#
はじめてのUnity教室 講義用ppt
UnityとBlenderハンズオン第10章
Unityで作るiOSゲームアプリ
Unity2015_No7_~Unity2D~
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
中高校生対象プログラミング講座Part2
猫でもわかるUnreal Engine4
Unityの夕べ in Fukuoka
Unityで横スクロールアクションゲームを作ってみる(第2回unity初心者勉強会)
Unity2015_No2~Terrain~
S大学ゲーム制作サークル第一回 超初心者向けUE4チュートリアル(1)
SIG-Audio#6 プラグインを書かなくてもここまで出来る!Unityサウンド
はじめてのUnity 改
Ad

[崇城大学][熊本Apps!] 学生のためのUnity勉強会