Unity Introduction from 2D shooting game.

28
夏のunityハンズオン祭り ~2Dゲームの作り方~ 株式会社BizReach プロダクトマーケティング本部 山下大輔

Transcript of Unity Introduction from 2D shooting game.

夏の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/