[Unity] 3D玉転がしアプリを作る

unity を使った 3D玉転がしアプリを作ってみたいと思います。3Dプリミティブの球体をiPhone/Androidの加速度センサーを使ってスマホを傾けると転がるようにします。
 
rolling-ball_01

Unity 2018.1

 




3D玉転がし

 
iPhoneとAndroidの加速度センサーは異なるAPIを使いますが、UnityではこれをInputクラスでまとめて使用できるようにしています。
 

 

GameObjectの配置

 
メニューから「GameObject」->「3D Object」->「Plane」で土台を作ります。
同様にで Sphere(ball), Directional light を設定して配置します
 
rolling-ball_02
 
それぞれを左の「Hierarchy」でそれぞれを選んで、右側の「Inspector」で位置、回転、拡大を設定します。
 
Plane: Position, Rotation, Scale はデフォルトのまま
 
rolling-ball_03
 
Sphere(ball): ボールとしてSphereを配置します。PositionPositionはY方向に「2」として浮き上がらせておきます。
他の Rotation, Scale はそのままの設定
 
rolling-ball_04  
Directional light: の設定はいい具合にボールに光が当たるようにします。
 
rolling-ball_05
 
Main Camera: もともとありますが、画面を見る位置を決めます
 
rolling-ball_06
 
このようになりましたでしょうか、これは「Scene」なので実際は「Game」で確認できます。
 
rolling-ball_07
 
色の設定:Plane,  Sphere に色を付けます
「Assets」->「Create」->「Material」
 
rolling-ball_08
 
AssetsにNew Materialができます。名前をblueにしてInspectorから色を設定します。
 
rolling-ball_09
 
Inspectorのスポイドの四角形をクリックするとパネルが現れるので青色に設定します。
 
rolling-ball_10
 
Asset に出来上がった New Material のblueをドラッグ&ドロップで Planeに入れます
同様に、 Sphere を赤い色を設定します。

MainCameraでSceneを見ると「Camera Preview」で出来上がり画面の確認ができます。

rolling-ball_11
 
RigidBody: ball を選択して「Component」「Physics」「Rigidbody」に設定します。
 
rolling-ball_12
 
ballにRigidbodyの項目が追加されました。
 

 

加速度センサーを使ったスクリプトを作成

 
ball が上下左右の加速度で移動するようにスクリプトを作ります。
加速度センサー値は
 

 
のようにして取得できます。
 
ballRun.cs

 
このscriptをballにドラッグして設定します。

 

Unity Remoteで実行

 
Unity Remote 5 の使い方はこちらを参考に。

UnityアプリをiPhone用に作成する場合に、ハードウェアの依存性の確認が必要です。ただそれを毎回Xcodeプロジェクトとして吐き出して...

iPhone/AndroidにインストールしたUnity Remoteを起動しケーブルでPCと接続します。
 
「Edit」「Project Settings」「Editor」を選択します
 
rolling-ball_14
 
Editor Settingsのダイアログが表示されるので
「Device」を選択肢の「Any iOS Device」に設定します。
(Androidの場合はAny Android Device)
 
remote_02
 
これでUnityのSceneからGameに変更して「Play」すると、Unity画面から少し遅れてiPhone(Android)の画面でボールが現れます。上下左右に傾けるとボールが転がっていきます。
Unity Game:
 
rolling-ball_02
 
iPhone: (Androidも同様です)
 
rolling-ball_01
 
 
Reference:
モバイル端末の入力