夏のunityハンズオン祭り
2Dゲームの作り方
株式会社BizReach
プロダクトマーケティング本部
山下大輔
自己紹介
・山下大輔(やました だいすけ)
・2015年1月よりビズリーチのiOSエンジニア
・@daisuke0131
・http://www.facebook.com/daisuke0131
・https://github.com/daisuke0131
https://itunes.apple.com/jp/app/haikurasu-ren-cainokyaria/id972002786?mt=8
Unity
・統合開発環境を内蔵したゲームエンジン
・3D/2Dゲームが簡単に作れる
・マルチプラットフォーム
->iOS、Android、Windows、OS X、Linux、ウェ
ブブラウザ、Flash、PlayStation 3、Xbox 360、
Wii U
・c#/javascript/booに対応
その他のゲームエンジン(iOS)
・cocos2d-x
->c++で開発、マルチプラットフォーム(iOS、
Android、Windows、Marmalade、Linux、Bada、
BlackBerry 10)などに対応
・SpriteKit
  ->apple純正で、UIViewとの相性がよい。
http://d-cube.connpass.com/event/16738/
今日作るもの
このゲームを作る上で主に理解したいこと。
・Unityの基本的な操作方法
・Spriteの作成方法
->画像からゲームオブジェクトを作成
・スクリプト(c#で記述)の使い方
・物理法則の適用について
-> Rigidbodyの使い方
・オブジェクト同士の衝突
->Colliderの使い方
今回のプロジェクト置き場
プロジェクト全部
・https://github.com/daisuke0131/Shooting
・画像、スクリプトは
https://github.com/daisuke0131/Shooting/blob/
master/resources.zip
に置いてあります。
ハンズオンは画像、スクリプトを起点にはじめます。
resource.zipをダウンロードしてください。
時間内にたぶん全部作り切るのは無理そうなので、
先ほどの主要機能をメインに説明します。
ではプロジェクトを作りましょう。
Scene
Game
Hierarchy Project Inspector
・Scene
オブジェクトを操作して実際にゲーム画面を作っていくところ。
・Game
再生した時の実際の画面が表示されるところ。
・Hierarchy
配置したゲームオブジェクトの階層構造が表示される。
・Project
ゲーム部品(オブジェクト)置き場。ゲームオブジェクト、画像、アニメーション、音声など。
・Inspector
ゲームオブジェクトの詳細設定をする画面
Unityの画面について
スマホアプリ用にプロジェクトの設定を変更
File->Build Settings
iOSを選んでswitch platformボタンを選択
まずはSpriteを表示する
Spriteの取り込み方
resourcesフォルダにある画像をdrag&drop
とりあえず全部とりこんで整理します。
Spriteの表示方法
先ほどとりこんだSpriteをSceneにDrag&Drop
動かしたい!
スクリプトを作りましょう
Assets->Create->C# Script
ダブルクリックすると
Unity付属のエディターが起動します。
ファイル名はPlayerにします。
スクリプトを書きます
void Update () {
float x = Input.GetAxisRaw ("Horizontal");
float y = Input.GetAxisRaw ("Vertical");
Vector2 direction = new Vector2 (x, y).normalized;
Vector2 pos = transform.position;
pos += direction * Time.deltaTime;
transform.position = pos;
}
Update()はframe更新毎に呼ばれる。
スクリプトをアタッチします。
先ほど作成したPlayerオブジェクトにスクリプトをDrag&Drop
してください
ここでプレハブの説明をします。
プレハブって??
・Classみたいな概念。コピーできる大元を作る機能。
・先ほど作成したオブジェクトをAssetsにDrag&Dropすると
作成されます。
弾を撃ちます。
Rigidbody2Dをつかう。
・Add Component -> Rigidbody2Dを選択してください。
・物理演算用の機能です。
弾丸の生成
・弾丸のプレハブ化までは手順同じなので省略します。
public GameObject bullet;
IEnumerator Start () {
while (true) {
Vector2 pos = new Vector2(transform.position.x,transform.position.y + 0.1f);
Instantiate(bullet,pos, transform.rotation);
yield return new WaitForSeconds(0.05f);
}
}
コルーチンについては以下も参照
http://wonderpla.net/blog/engineer/Unity_Co-routine/
・Player.csのStart()を以下のように修正します。
<-プレハブ突っ込む用の宣言
Unityのブロックしないで処理する仕組み(コルーチン)
衝突を検出します。
Collider2Dをつかう。
・Add Component -> Polygon Collider 2Dを選択してください。
・物体同士の衝突を扱う機能です。
衝突判定の境界
Collider2Dをつかう。
・敵のColliderでIs Triggerをチェックして以下のスクリプトを追加して
ください。
・敵のスプライトも追加して同様にColliderを追加してください。
void OnTriggerEnter2D (Collider2D c)
{
Destroy (c.gameObject);
}
主要機能の説明は以上です。
あとはほとんど同様の手順なので
時間の許す限り説明をしていきます。
次回の祭り会場のご案内
夏のUnityハンズオン祭り Flappy Birdもどきを作ろう
http://d-cube.connpass.com/event/19129/

Unity Introduction from 2D shooting game.