2015年1月15日木曜日

Unityである一点を中心にカメラを旋回させる方法

ゲームである地点を中心にカメラを旋回させたい場合ってありますよね。

そのやり方が意外と簡単だったのでご紹介します。



まずは、カメラが旋回しているのが分かりやすいようなモノを配置します。


次に、カメラを旋回させる中心点にEmptyを置いて、カメラをその子供にします。


こうして、中心点とカメラを親子関係にするのがポイントで、こうしておけば中心点を回転させると、そこを中心にカメラが旋回するというわけです。


後は、キー入力やマウスの操作で中心点を回転させるスクリプトを書けばOKです。

例えばこんな感じとか。



#pragma strict

//キー入力で回転させる距離
public var keyDistance : float;

//マウスで回転させる距離
public var mouseDistance : float;

//前のドラッグ位置
private var oldPos : Vector3;

//ドラッグ中かどうか
private var isDrag = false;

function Update () {

  //キー入力で回転
  gameObject.transform.Rotate ((Input.GetAxis("Vertical") * keyDistance ), (Input.GetAxis("Horizontal") * keyDistance ), 0 );

  if (Input.GetMouseButtonDown(0) || isDrag) {
 
    if (isDrag) {
      //前のドラッグ位置との差分を取得
      var diff = Input.mousePosition - oldPos;
   
      //差分だけ回転させる
      gameObject.transform.Rotate(diff.y * mouseDistance, diff.x * mouseDistance, 0 );
   
    }
    //現在のポジションを保存
    oldPos = Input.mousePosition;
    isDrag = true;
  }

  if (Input.GetMouseButtonUp(0)) {
    isDrag = false;
  }

}



スクリプトのプロパティはこんな感じ




実行してみると、上下左右キーやマウスのドラッグでカメラが旋回しました。





親子関係にするってことさえ分かれば簡単ですね。

このようなカメラの動かし方はよくあると思うので覚えておくと良いですね。



『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル

2015年1月14日水曜日

Unityで作ったゲームをスマホで動かしてみる

Unityを使えば簡単にゲームっぽいものが作れてしまいます。

では、作ったゲームをスマホで動かしてみましょう!

※Unity Version4.6.1(Mac)の情報です。


Android



実機の設定


Androidで開発中のアプリが動かせるように以下の2点を設定します。

  • 開発者向けオプション→USBデバッグをON
  • セキュリティ→提供元不明のアプリをON


Android SDKの設定(Unity)


次にUnityでAndroid SDKの設定をします。

Unity→Preferences…を選択



Unity Preferencesのウインドウが立ち上がるので、External Toolsを選択。

Android SDK LocationにAndroid SDKのパスを入力する。



※Android SDKはこちらでダウンロードできます。




ビルド設定(Unity)


最後にUnityでビルド設定です。

File→Build Settings…を選択



Build Settingsのウィンドウが立ち上がるので、PlatformにAndroidを選択して『Switch Platform』ボタンをクリック。



PlatformがAndroidに切り替わったら『Player Settings…』ボタンをクリック。

InspectorビューがSettings for Androidに切り替わるので、IdentificationのBundle Identifierを修正する。


※jp.xxx.test04のように「自分のドメインの逆+アプリ名」という感じでOK



実行


いよいよ実機で動かすので、Androidの実機をUSBで繋いでおきます。

先ほど表示したBuild Settingsウィンドウの『Build And Run』をクリック。

apkファイルを保存する名前を聞かれるので、適当に入力(プロジェクト名など)して『Save』ボタンをクリック。




上手くビルドが通ると実機にUnityのロゴが表示され、ゲームが実行されます。




注意点


私の場合は、いくつか詰まった点があったので記載しておきます。

ビルド時に以下のエラーメッセージが表示されました。

Android SDK is outdated
SDK platform Tools version XX < 20

これはAndroid SDKのversionが古いということなので、メッセージの右辺(API20)以上のモノをSDK Managerを使ってインストールすればOKでした。


あとは、JDKの1.7以上を求められたので、Oracleのサイトからダウンロードしてインストールしました。




iOS


iOSはもっと簡単です。

ただし、Xcodeで実機デバッグをできるようになっていることが前提となります。



ビルド設定(Unity)


Androidの場合と同じように「File→Build Settings…」を選択し、Build Settingsのウィンドウを立ち上げ、『iOS』に『Switch Platform』します。



後は『Build』ボタンをクリックするとXcodeのプロジェクトをどこに、どんなフォルダ名で出力するか聞かれるので、適当に入力します。



ビルドが完了したら、先ほどのフォルダを開いてみると、Xcodeのプロジェクトファイルが出力されているので、それをXcodeで開きます。




実行


Xcodeが立ち上がったら、後はiOSアプリを実機で動作させる手順で実行します。




こんな感じでiPhoneで動きました。



まとめ


こんな感じで簡単にスマホアプリが作れちゃいました。

Unity以外の手段で開発するとこうは行きません。

サクッとアプリを作りたい方はUnityをお勧めします。



『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル

2015年1月13日火曜日

Unityでアセットを使って3DRPG?を作る

Unityではアセットと呼ばれる部品を使うと、簡単にクオリティの高いゲームを作れます。

というわけで、試しに3DRPG風の世界を作ってみましょう。


unityPackage


新しくプロジェクトを作るときに、unityPackageという標準で使えるアセットをインポートします。

今回は、Terrain(地面)、Skyboxes(空)、Tree(木)、Water(水)、Character Controller(操作できるキャラクター)を読み込みます。




Terrain



プロジェクトを作ったら、まずはTerrainで地面を作ります。



TerrainはInspecterにあるツールで簡単に山を作ったり、木を生やしたりできます。



それらを使って適当にこんな感じの地面を作ってみました。




Skybox


次にSkybox空を作ります。

メインカメラにSkyboxを設定することで、カメラの動きに追従して空が描画されます。



今回はSkyboxにSunny1 Skyboxという空を設定しました。



ついでにDirectional Lightも追加して実行するとこんな感じの綺麗な空になりました。




Character Controller



Character Controllerは置くだけで、自由自在に動けるキャラクターになります。

今回は三人称視点の3rd Person Controllerを使用します。



こいつを地面に置いて、Inspectorでアニメーションを設定します。
(idel, walk, run, jump)



そして、実行すると作った地面の上に立つキャラクターを方向キーで操作して、世界を歩き回ることができます。



どうですか?まるで3DのオープンワールドのRPGに見えませんか?

Unityではこのようにアセットを組み合わせれば簡単にクオリティの高いゲームが作れちゃいます。

こんなに簡単にこんなのが作れちゃうと、今まで我々が作ってたものは何だったのかって感じですよねえ?



『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル

2015年1月12日月曜日

Unityで物理エンジンを体感してみる

Unityの使い方が大体解ったところで、では実際に何か作ってみましょう。


オブジェクトの生成


Unityにはプリミティブ素材という図形のような物が標準で使えます。

利用方法は簡単、HierarchyのCreateから作りたい素材を選択するだけです。



選択した素材がSceneビューに生成されるので、移動・回転・拡大縮小などをして並べていきます。



素材を並べただけでは実行すると真っ暗になってしまうので、とりあえず全体を太陽のように照らすDicrectional Lightも追加しておきましょう。

後はカメラのアングルを調整して、ひとまずこんな感じで並べてみました。



実行ボタンでプレイ画面をGameビューで見てみるとこんな感じです。



ただ、これだけだと素材は全く動かないのでゲームになりません。

そこで物理エンジンを利用してみましょう。


重力の付与


では、斜面の上にある球に重量を与えてみましょう。

重力を与えたいオブジェクトを選択して、Rigitbody(リジッドボディ)を設定します。

InspectorのAdd Component→Physics→Rigidbody



設定した後で実行してみると、重力を与えた球が斜面を転がっていくようになりました。



さらに、斜面の下に同じようにRigitbodyを付与した円柱を並べれば、これだけでピン倒しゲームができてしまいます。



ものの数分で3Dゲームらしきものが簡単にできてしまいました。

これだけでもUnityの凄さが体感できたと思います。

ただ、Unityのポテンシャルはまだまだこんなものではないので、もっと勉強していきましょう。



『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル