2013年5月31日金曜日

【Unity】GameObjectとComponent

ブログサボってました。
なんでもいいから毎日書こう~。

黄本は迷路のところまでやりました。
ちょっと休憩して今日はUnityのチュートリアルを見てました。

序盤はすごい勢いで読み飛ばしたけど
GameObjectの項が面白かったのでちょっと遊んでみた。

GameObject

ゲーム内のオブジェクトは全てGameObjectなんだそうな。
CubeやSphere、CameraやLightも全部GameObject。
でも、GameObjectは何もしません。って書いてある。ただの箱だってさ。
矛盾してるね。

ここでいうCubeとかはカスタマイズされたGameObjectだそうな。
空っぽのGameObjectは何もしないからいろいろなピースを入れてやる必要があるんだって。
ピースのことをComponentと呼ぶそうな。
  • Cubeとか = 空のGameObject + いくつかのComponent なんだね!

Component

ComponentはGameObjectに機能を追加するためのもの。
最も基本的なものに座標、縮尺の情報を持たせるためのTransformコンポーネントがあるってさ。
また、GameObjectは必ずTransformコンポーネントを持っているらしい。

へ~。見てみよう。

確認

Cubeの作成

Sceneの新規作成→Hierarchy→Create→Cube
Cubeオブジェクトを追加
とりあえずよく使うCubeを置いてみた。

Hierarchyビューは編集中のSceneに存在するGameObjectの一覧とみて間違いなさそうですね。

また、GameObjectを選択したときのInspectorビューには含まれるComponentが表示されるんだね。

Cubeには最初から
  • Transform
  • Cube(Mesh Filter)
  • Box Collider
  • Mesh Renderer
の4つのコンポーネントが含まれていることが分かりました。

なるほど。じゃあ空のGameObjectに同じもの追加すればCube作れるよね。

空のGameObjectの作成

GameObject→CreateEmpty
空のGameObjectを追加した
空のGameObjectが作られた。
確かにTransformコンポーネントは最初からありますね。
なので座標や縮尺は入れられます。(見えないですけど)

Transformコンポーネントは右クリックしてもRemove Componentは押せませんでした。
必須というだけはありますな。

じゃあ順番にComponent足していきます。

Cube(Mesh Filter)の追加

名前からして形を作ってるのはこれでしょうねー。
Add Component→Mesh→Mesh Filter
Mesh Filterを追加
Mesh Noneってなってるので
右端の丸いのクリック→Cubeを選択
Mesh選択
Cubeメッシュが適用されたんだと思う。(見えない)

Mesh Rendererの追加

Add Component→Mesh→Mesh Renderer
マテリアルが参照されてないので丸いのクリック→Default Diffuseを選択
Rendererが追加された
見えるようになりました。

MeshをRenderするのがRendererですよね。(適当)
  • MeshをSphereにすると球に変わります。
  • RendererのMaterialを変えると見た目が変化します。
名前から想像した仮説はあってたみたい。よかった。

じゃあHierarchyビューのCreate→Cubeは
プリセットされた【GameObject + Component * 4】を作ってるにすぎませんねー。
よく使うから定義してあるんだね。

Box ColliderってComponentは衝突判定とかに使うやつだろうしまた今度にしよう。

今日のまとめ

  • GameObjectはただの箱
  • GameObjectは1つ以上のComponentを持つ
  • GameObjectは必ずTransformComponentを持つ
  • Mesh+Rendererで見えるようになる
Unityおもしろ!


Unity系記事まとめ

2013年5月30日木曜日

【Unity】重力加速度を変更する

Z軸方向に物を落としたかったので重力加速度の方向を変えた。
規定値ではY軸方向に-9.81となってる。

設定するには2つの方法がある
  • Physics Managerを使う
  • スクリプトからPhysics.gravityにアクセスする

Physics Managerを使う方法

Edit→Project Settings→Physics
これでInspectorビューにPhysicsManagerが表示される。
その中のGravityの項目を変えればOK
Physics Manager

スクリプトから変更する方法

動的に変更する場合はこちらで。
Physics.gravity = new Vector3(0f, 0f, -9.81f);
C# Script



Unity系記事まとめ

2013年5月29日水曜日

Git系記事まとめ

ソースコードのバージョン管理をするためにGitを導入しました。
Windows+EclipseでGitを利用することを想定してます。

↓導入したもの
  • Git - ソースのバージョンを管理する仕組み
  • msysgit - GitをWindowsで使うために必要
  • EGit - EclipseからGitを利用するためのプラグイン
  • BitBucket - ソースを保管するリポジトリサービス
     ユーザー5人までなら無料。プライベートリポジトリも無料。

Git系記事へのリンク

初期設定とか

使い方とか

2013年5月28日火曜日

【Unity】新規プロジェクトの作成とシーンの関係

プロジェクトの作成

File→New Project...
新規プロジェクトの作成
空のディレクトリを指定して終わり。空じゃないと怒られる。
ディレクトリを指定

ついでにUnityプロジェクトの単位がよくわかんなくて調べてみた。

プロジェクトとシーン

プロジェクト

1つのゲームに1つのプロジェクトという考え方でいいみたい。
1プロジェクトがWindows上の1フォルダになる。
ここにゲームで使われる全てのものが放り込まれる感じ。
Unity起動時に前回開いてたプロジェクトフォルダが自動で開かれる。

シーン Scene

ゲーム中の1画面。というか1つの3D空間。プロジェクトの中にいくつも作成できる。
プロジェクトを作成した直後は1つ目のシーンが作成され、未保存で編集中になってる。
そしてUnityでは1つのシーンしか同時に編集できない。
プロジェクト作成直後
赤枠が現在開いているシーンの名前ですね。作成直後はUntitled。

シーンの保存

File→Save Sceneでシーン名を入力して保存。
わざわざ押さなくてもビルドするときやUnityを終了するときに保存しなさいって言われる。
シーンの保存
保存するとプロジェクトビューに表示されますね。
保存されたシーン
最初にビルドしたとき何を保存したんだろう?ってのがここでやっとすっきりした。
プロジェクト全体を編集していると思ったら1つのシーンだけを編集してた!ってことですね。

まとめ

  • 1つのゲームに1プロジェクト
  • 1プロジェクトには複数のシーンが含まれる
  • Unityの画面上は1つのシーンしか同時に編集できない
この3つが分かったらすっきり!


Unity系記事まとめ

2013年5月27日月曜日

Android Studioを日本語化した



ここからリソースファイルをダウンロードして
http://morizo999.github.io/IDEA_resources_jp/

ここの記事通りにやればできる。
http://kazukii777.blogspot.jp/2013/05/android-studio_17.html

すごいね。

日本語化したけど、やっぱり今使うのはやめた。

2013年5月26日日曜日

【Unity】デバイスの傾きを取ってみる

Androidデバイスで直感的なゲームを作るためには傾きや加速度の検知がいりそうです。
黄本読んだら傾きは加速度センサーを使って取るのが簡単って書いてあった。
ジャイロセンサー使うものはプラグインが必要とかなんとか?よく読んでない。

とりあえず加速度センサー使うとどんな感じでとれるのかやってみる。

傾き取得サンプルの作成

プロジェクト作成

こちらを参照。それっぽく名前を付ける。
プロジェクトができた

スクリプト追加

Projectビュー→Create→C# Script
適当に名前を付ける。
スクリプト追加

スクリプト編集

ごりごりと。
やっぱC#楽だ・・・

こんな感じ
using UnityEngine;
using System.Collections;

public class InputCheck : MonoBehaviour
{

    /// <summary>加速度?傾き?</summary>
    private Vector3 acceleration;
    /// <summary>フォント</summary>
    private GUIStyle labelStyle;

    // Use this for initialization
    void Start()
    {
        //フォント生成
        this.labelStyle = new GUIStyle();
        this.labelStyle.fontSize = Screen.height / 22;
        this.labelStyle.normal.textColor = Color.white;
    }

    // Update is called once per frame
    void Update()
    {
        //文字描画はOnGUIでしかできないらしいので保持
        this.acceleration = Input.acceleration;
    }

    /// <summary>
    /// GUI更新はここじゃないとダメらしいよ。
    /// まだよくわかんない。
    /// </summary>
    void OnGUI()
    {
        if (acceleration != null)
        {
            float x = Screen.width / 10;
            float y = 0;
            float w = Screen.width * 8 / 10;
            float h = Screen.height / 20;

            for (int i = 0; i < 3; i++)
            {
                y = Screen.height / 10 + h * i;
                string text = string.Empty;

                switch (i)
                {
                    case 0://X
                        text = string.Format("accel-X:{0}", System.Math.Round(this.acceleration.x, 3));
                        break;
                    case 1://Y
                        text = string.Format("accel-Y:{0}", System.Math.Round(this.acceleration.y, 3));
                        break;
                    case 2://Z
                        text = string.Format("accel-Z:{0}", System.Math.Round(this.acceleration.z, 3));
                        break;
                    default:
                        throw new System.InvalidOperationException();
                }

                GUI.Label(new Rect(x, y, w, h), text, this.labelStyle);
            }
        }
    }
}


  • Input.accelerationで加速度センサーの入力が取れる(らしい)
  • 定期的にUpdateが呼ばれる。
  • 文字の表示とかGUIを操作するのはOnGUI()じゃないとダメ。
  • GUI.Label()メソッドで文字を表示できる。
  • Labelのフォント変更とかはGUIStyleを渡す。

ゲームオブジェクト追加

スクリプト単体じゃ何も起きないのでオブジェクトを追加。
でも見た目に出る必要ないから空のオブジェクトを追加
空のオブジェクトはHierarchy→Createでは作れないらしい。

GameObject→Create Empty
空のオブジェクトを追加
これも適当に名前つけとく。

オブジェクトにスクリプトを適用

ドラッグ&ドローップ
オブジェクトにスクリプトを適用
完成。実行すると文字が出る。
表示された

実機で実行

方法はこっちに書いた感じ。
実機で動かした

  • 机に置いた状態だと X≒0、Y≒0、Z≒-1
ここを基準にして
  • 手前に向かって立てていくと X0→0、Y0→-1、Z-1→0
  • 奥に向かって立てていくと X0→0、Y0→1、Z-1→0
  • 左に向かって立てると X0→-1、Y0→0、Z→0
  • 右に向かって立てると X0→1、Y0→0、Z→0
ちゃんと取れてるっぽい・・・かな?

2013年5月25日土曜日

【Unity】Sceneビューのカメラ操作

黄本見ながらUnity勉強中です。
Sceneビューを操作して色々と調整していくことは分かったんですけどいまいち自在に操作できなかったので遊んでみた。見つかった操作法をメモ。

あ、Windowsです。

Sceneビューと操作

Sceneビューって?

Sceneが1つの3D空間らしいのでそれを確認する画面ですね。
どのオブジェクトがどの座標(x,y,z)に~なんて考えると頭が痛くなるけどSceneビュー見とけば大丈夫。視覚的に確認できるので便利です。
Sceneビュー
くるくる見まわしたり、近づいて見たり、移動させたり・・・たぶんいちばん操作するであろうビュー。

ツールバー(の一部)

画面上の方に表示されてます。
これを切り替えながらSceneビューを操作します。
ツールバーの一部(呼び方わからんw)
左から

  • 視点移動
  • オブジェクトの移動
  • オブジェクトの回転
  • オブジェクトのサイズ変更
に対応してる様子。
これらを選択した状態でSceneビュー内をマウス操作するといろいろできます。

それぞれ[Q][W][E][R]キーで簡単に切り替えられますね。
マウスめんどくてショートカット探したら見つけた。

視点移動

Sceneビューを自在に見まわす為のカメラ移動方法をメモ。

視点移動の方法は下記3種類あるみたい。
  • カメラの平行移動
  • カメラの旋回
  • カメラのズームイン/アウト
動きはやればすぐ分かる。
いろんなやりかたがあるみたいなのでメモ。

カメラの平行移動

  • ツールバーで視点移動を選択してから、マウス左ボタンドラッグ。
  • Ctrl+Shift押しながらマウス左ボタンドラッグ。
  • マウスホイールドラッグ
  • シフト押しながら操作するとなんか早い。
  • (よくわからん)右クリックした状態で[A][D]キーを押すと左右にだけ平行移動できた。
マウスホイールドラッグが簡単!

カメラの旋回

  • Altキーを押しながらマウス左ボタンドラッグ
  • マウス右ボタンドラッグ
右ボタンドラッグが簡単!

カメラのズームイン/アウト

  • マウスホイール回転
  • Ctrl+Shift押しながらマウス右ボタンドラッグ(マウスホイールより微調整)
ホイール回転が簡単!

マウスのみで楽ちんだね。

オブジェクトにフォーカス

HierarchyビューでオブジェクトをダブルクリックするとSceneビューがそれにフォーカスしますね。
便利!
Cubeにフォーカス
Sphereにフォーカス

オブジェクトが増えてゴチャゴチャしてきたらよく使うだろうなぁ。

投影方法

座標軸っぽいものの中心をクリックするかその下のグレーの文字をクリックすると投影方法が切り替わりますね。
投影法切り替え
並行投影
透視投影(遠近法) 
投影法とか機械設計製図思い出すなぁ。
切り替えるたびに軸の下に出るPerspとIsoはperspectiveとisometricかな?

軸を正視

座標軸っぽいのの軸をクリックするとその軸を正視した状態にカメラが回り込みます。
軸を正視
X軸を選択後
これはX軸の+側から-側を見てるってことでいいんだよね?

確認してみた。Z軸を正視するようにしてボールのZ座標を動かして。
軸の確認
色のついてるほうがプラス
色がついている方向に向かって各軸がプラスになってる。
色つき円錐をクリックするとその軸のプラス方向からマイナス方向へ向かって正視する形になるね。
理解はできるけどなんか分かりづらい。

なのでGameビューのカメラはデフォルトで
  • 右がX軸プラス
  • 上がY軸プラス
  • 奥行きがZ軸プラス
になってるんですね。


Unity系記事まとめ

2013年5月24日金曜日

Unityの画面レイアウトを変更してみる

Unityの画面レイアウトをなんやかんやしてみた。

というのも画面右上のボタン押したらレイアウト変更できて面白そうだったから。
画面レイアウトを変更

まずはデフォルトのレイアウト

デフォルト
いろんな子ウィンドウが並んでる。
ググろうとしたけどめんどくなった。役割を適当に予想。

  • Hierarchy(階層)ビュー
画面内のオブジェクトが並ぶツリービューのようなものみたい。
この前作ったCubeとかがここだなぁ。画面内に表示するオブジェクトが並ぶのかな?
  • Projectビュー
プロジェクトで使うAsset(資産)が並ぶビューみたい。
Hierarchyに表示されるCubeとかは表示されないけどいまいち区切りが分からん。
とりあえずスクリプトや音声ファイルとかが並びそうな予感。
  • Sceneビュー
Scene=3D空間っぽい。1つのゲームを作るのに複数のSceneを切り替える感じだと予想。
メニューシーン、ゲームシーンとか。ちゃんと調べてない、ただの予想。
エディタ上だと3Dモデルが並ぶみたい。
  • Gameビュー
再生ボタン押したときに切り替わったしプレビュー画面だろうなー。
  • Inspectorビュー
プロパティを表示するエリアだと思う。
HierarchyビューやProjectビューでアイテムを選択すると表示が切り替わるしたぶんそんな感じ。
  • Consoleビュー
ログ出したりするんだろうね。きっと。使い方わかんないけど。


デフォルトレイアウト使いやすそう。

2 by 3のレイアウト

2 by 3
SceneとGameがでっかくなった。微調整を繰り返すときに便利そう!
Assetsをエクスプローラの詳細表示みたいに小さいアイコンで表示できないかなぁ。

4 Split

4 Split
名の通りScene画面が4分割。再生押すと左下の1個がGameビューに切り替わる。
いつ使うんだろ。3D経験ないからわかんないけど必要になるときがあるんだろうね。

Tall
Wide
この辺は好みだなー。いつでも切り替えられるし便利。

タブ追加

タブ右クリックでどうにでもできた・・・。
好きなタブを追加
タブをドラッグで好きな場所に移動
タブの移動
もう好きにして!


Unity系記事まとめ

2013年5月23日木曜日

【Unity、Windows】UnityのエディタをVisual Studio Express 2012に変更する

※Macをお使いの方はこちら
【Unity、Mac】UnityのエディタをVisual Studio Express 2012に変更する

先日Unityのインストール方法の記事を書いて
ちょー簡単ヒャッハーってなってたら
Twitterで@tamadenkiさんがこんなことを教えてくれました。

相当使い辛いんだろうなぁ・・・
ほとんどの人がエディタにキレるらしいです。
使い慣れてるVisualStudioに変更できないかと調べたらでてきました。

http://unity.creator.ms/unity-014.html

ありがとうございます。どんピシャです。
無料のExpress版を使います。

2014.08.25追記

先月ぐらいにWindows7 + VS2013Expressで同様の設定を行ったのですが
Unityからの起動がうまくいかず諦めました…

でも成功されてる方もみえますね。
参考 > Unityのスクリプト編集ソフトをVisual Studioに変更 | nocchi* ゲーム制作日記
こちらの方は Windows8.1 + Unity4.6.0b17 + VS2013Express で成功されてるようです。

あのときはどこか設定まずかったのかなぁ。

設定方法

VisualStudioのインストール

これをダウンロードしてインストール。
30日以降も使いたければ登録必要です(無料)

やけにカッコいいインストーラ

Unityの設定

Unityインストール先のEditorフォルダを開き、適当な名前のバッチファイルを作成。
unity-editor-execute.batにした
中身を変更
Start "" %1
これだけ
Unity起動→Edit→Preferences...
設定画面へ
Ecternal Tools→External Script Editor→Browse...
エディタを変更
さっき作ったバッチファイルを選択。

Assets→Sync MonoDevelop Project
何かSyncする

どうもSync~をするとUnityプロジェクト直下に出来たVisualStudio用ソリューションファイルが開かれるみたいですね。
立ちあがった。
この段階ではソースファイルは開かれてませんがVSはこのまま置いておきます。

 VS2012始めて起動しましたがフラットUI見づらいですね…
 VS2010の感じが好きだったなぁ…。

確認

Projectビュー→Create→C#Script→適当な名前で保存

できあがったスクリプトをダブルクリック
C#スクリプトをダブルクリック
立ちあがったー
開いてるVS上でダブルクリックしたスクリプトが開きます。
スクリプトが開いた
ちゃんとインテリセンスも働きました!
VSつかえそう~

2回目以降


  • Unity起動→Sync~→スクリプトをダブルクリックでいけます。

Sync~のときに"行の終わりの不整合"ってのが出ますがCR+LFで行けそうでした。
CR+LFを選択

文字コードやらインテリセンスやら問題でないかしばらく使ってみよう。


Unity系記事まとめ

Related Posts Plugin for WordPress, Blogger...