おとやすみ日記

ゲームプランナー、一児の父です。

【はじめてのUnity】ブロック崩しを作る[4]

このへんで、実装方針を決めてみた。今回は1.の部分だけで終わってしまいそうだが。

  1. iPhone実機でプレイできるように調整する
  2. iPhone実機でゲームを操作できるように実装する
  3. タイトル画面→プレイ画面→ゲームオーバー、の流れを作る
  4. ブロックを消すと得点が加算される
  5. 3回ミスしたらゲームオーバー、タイトル画面に戻る
  6. 3ステージ遊べる

1. iPhone実機でプレイできるように調整する

Unity学習時に毎回つまづくのはここだ。iOSアプリ開発者向けの「iOS Dev Center」はすべて英語なのと、iOSがバージョンアップされるたびにセッティング方法が変わったりするため、ググって出てくる参考記事もそのまま参考にはならなかったりで、挫折したことが多々あるのだ。

iOS Dev Center - Apple Developer

まず何から調べれば?

現状を記しながら、調べた過程をメモしていこうと思う。

まずUnityでiOS環境向けに切り替えてPlayerSettingを選択。

プラットフォームのセッティング画面がインスペクタウィンドウに開かれるので、各項目を確認していく。 (※自分の環境では色々と日本語化してます。)

f:id:otoyasumi:20141030162749p:plain

Bundle Identifier(バンドル識別子)

要はそのアプリに付けられるユニークな識別子。「jp.otoyasumi.hogehoge」みたいなやつ。基本的には「”地域コード”."開発者の名前"."アプリ名"」と名付ける。

Exit on Suspend(サスペンド時に終了)

デフォルトではマルチタスキングに対応した状態なので、チェックボックスをONにすると「マルチタスキング非対応=ホームボタン押下でアプリ終了となる」の設定になる。

開発時はトライ&エラーの連続なので、チェックしておいたほうが都合が良い。

Xcodeプロジェクトの出力

Build Settingダイアログに戻り右下の「Build」ボタンを押すと、プロジェクトの出力場所(フォルダ)を指定しろ、と言われます。 

f:id:otoyasumi:20141030163946p:plain

ここでは「iOS」というフォルダを作り、そこを指定したところ。

Xcode上でのビルド

このフォルダ内の「Unity-iPhone.xcodeproj」を開くとXcodeが起動する。

「Identify」設定をみると気になる表示が。。

f:id:otoyasumi:20141030164947p:plain

f:id:otoyasumi:20141030164953p:plain

「Fix Issue」を押したらしばらくして表示は消えた。

そしてとりあえずRunボタンを押す。...ダメだと思いきや、ビルド成功。

 実機で動作時のキャプチャはこんな感じ。

f:id:otoyasumi:20141030172504p:plain

しかし当然ながらiPhone実機でまだ操作はできず。

ここから、タップ操作に対して下のバーが動くように実装していきます。

 

2. iPhone実機でゲームを操作できるように実装する

現在の実装では、左右のキー操作に対して"下のバー"(呼びやすいように"Racket"と呼びます)が、左右に動きます。

この実装を「画面のタップした座標のX軸位置にRacketを移動させる」ように改修したいと思います。

こちらのスクリプトJavaScript)は、変更前のもの。

#pragma strict

var Accel = 1000.0;

function Update () {
//左右キー操作で左右に移動
rigidbody.AddForce( transform.right * Input.GetAxis( "Horizontal" ) * Accel, ForceMode.Impulse);
//▼上下にも動かしたい場合はこれを使う
//rigidbody.AddForce( transform.forward * Input.GetAxis( "Vertical" ) * Accel, ForceMode.Impulse);
}

 

 Inputクラスを使用する

http://docs-jp.unity3d.com/Documentation/ScriptReference/Input.html

Input Managerで設定した軸(Axis)を読み込んだり、モバイルのマルチタッチや加速度センサーにアクセスするにはInputクラスを使用するらしい。

Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~

この書籍に載っているp160のサンプル「ブロックシューター」で「クリック位置へ弾が飛ぶようにする」スクリプトがあるが、そこでInputクラスが登場するので、このサンプルスクリプトを元に実装していこうと思う。