unity終了の手順

たとえば「android端末であった場合にリターンキーを押した時に終了させたい」場合は、スクリプトのUpdate内に

if(Application.platform == RuntimePlatform.Android){
  if(Input.GetKey(KeyCode.Escape)){
    input = INPUT_RETURN;
  }
}

などとしてinputに独自のキーコードを設定する。

メイン処理用のゲームオブジェクトでinputの値を確認して、INPUT_RETURNだった場合には

Application.Quit();
return;

を記述して終了させる。

 

複数同時タッチ

if(Input.GetTouch(0).phase == TouchPhase.Began){};// タッチ初め
if(Input.GetTouch(0).phase == TouchPhase.Ended){};// タッチ終わり
if(Input.GetTouch(0).phase == TouchPhase.Moved){};// タッチしている

上記をUpdate内に記述して確認する。

タッチ座標は

Input.GetTouch(0).position.x
Input.GetTouch(0).position.y

で取得できます。

複数取得する場合は、0を1にして複数確認すればok。

※ただし上記はpc上だと確認できないのでマウス操作でも動くように記述を追加しておいた方が良い。
※GetMouseButtonDown、GetMouseButtonUpなど

 

 

rigidbodyのすり抜け防止

rigidbodyの移動速度が速いとコリジョン判定の有るはずのオブジェクトをすり抜けてしまう場合がある。その場合は、

rigidbodyのインスペクター上の設定で、Collision DetectionをContinuousに設定します。
(移動する側のオブジェクトに設定するといいと思います。)

 

別のコードの値を参照する方法

ヒエラルキー上の各ゲームオブジェクトにセットされているコードA(ACode)、コードB(BCode)があるとします。

AからBのコードの変数を参照しい時は、Bに書く変数をstaticとします。
static var isCheck : boolean = false;

Aのコードでは以下のように調べます。
flag = BCode.isCheck;

 

デフォルトのメインカメラ

デフォルトでヒエラルキーにMain Cameraが存在します。これをコード上で操作する方法を記載します。コードはカメラオブジェクト以外に配置するものとします。

Camera.main.transform.・・・などとすれば位置や向きなどの変更が可能です。

目的(プレイヤーキャラなど)の方向に常に向けたい場合などはまず、対象となるゲームオブジェクトのtransformオブジェクトを取得します。

※変数を用意
private var obj: GameObject = null;

※init関数などを用意して記載
obj= GameObject.Find(“ヒエラルキーのゲームオブジェクト名”);

※毎フレーム呼ばれる所に記載
Camera.main.transform.LookAt(obj.transform);

などとします。

モデリングの詳細手順

アニメーションを含まないオブジェクトとしてのモデリング作成の詳細手順を書いておきます。
※LightWave9.6でのみの手順です。

1.モデリングをおこない、モデルの形状を作成します。
※UNITY上の1x1x1はLIghtWave上での100mx100mx100mとなります。

2.[マップ]→[新規UVテクスチャ]でウィンドウが開くので、テクスチャの名前を設定して[作成]をクリックします。(その他細かい初期設定はここでは無視します。)

3.テクスチャー用のpng画像を用意します。
※サイズは正方形でモデルにもよりますが、128×128あたりで用意します。
[色・質感編集]でウィンドウを開き、[基本]から、[T]マークをクリックします。テクスチャ編集ウィンドウが現れるので、
投影・・・UV
UV・・・作成したtexture名を選択
画像・・・テクスチャに利用する画像を選択
ピクセルブレンディングのチェックのon/off
の設定をします。

4. [マップ]→[マップ消去]をクリックしてデフォルトで設定されたUVマップ設定をリセットします。

5.モデルの全ポイントを選択状態にして、
[詳細]→[結合解除]をクリックします。
※これをしないとUVマップ上でポイントを上手く動かせない。

6.作業しているビューの一つをUV&利用する画像に設定しておきます。

7.モデルのUVマップ上に配置したいポリゴンを選択状態にして
[マップ]→[UV作成]をクリックします。
UV作成のウィンドウが出るので、
テクスチャ名 ・・・作成したtexture名を選択
マップ種別・・・平面状やアトラス(形状によって使い分ける。)
サブパッチ補間・・・リニア(よくわからん・・・)
を選択して作成をクリックします。

8.ビューのUVマップ上にポリゴンが配置されるので移動、ポイント移動、拡縮などを駆使して位置を調整します。

9.7~8を繰り返してUVマップの設定が終わったらモデル上の全てのポイントを結合して元に戻します。

10.[ファイル]→[出力]から[FBXファイル出力]を選択してfbxファイルとして出力します。ここまでで
fbxファイル
pngファイル(テクスチャ画像)
が出来上がります。これらはこのままUNITY上で利用する事になります。

※LightWave9.6でファイルを出力する場合、日本語を含むフォルダがパス上にある場合、出力されない場合があるので注意が必要。

 

 

モデリングの基本

モデリングに利用するソフトは今回LightWave9.6とします。
※UNITY上ではFBXファイルとして扱いたいので、FBXファイルでエクスポートできるソフトを利用します。

アニメーションを含まないモデルの場合は、
○モデリング
○テクスチャー(UV設定)
○FBXファイルで書き出し。
という流れでモデルデータを用意します。
完成したモデルデータxxx.fbxをUNITYのプロジェクトビューにドロップすればモデルを使えるようになります。

UNITY上でスケールを変更するのは避けたいのでモデリング時にスケールをある程度想定しておく必要がある。

UNITY上のGameObjectのCubeのスケール1x1x1のサイズと同等になるサイズは
LightWave上では100mx100mx100mでほぼ同じサイズとなる。

タッチ操作(スクリーン座標の値の取得)

Unityでのマウス操作、画面タッチの基本。

if(Input.GetMouseButtonDown(0)){
    var x : int = Input.mousePosition.x;
    var y : int = Input.mousePosition.y;
    // タッチした時の処理
}

とすればマウスダウン(タッチ時)の処理は行える。

Input.mousePosition.x(y)で現在のタッチ位置の座標が取得できる。(横向き固定では、左下が0,0になる様子)

if(Input.GetMouseButtonUp(0)){}// マウスアップ
if(Input.GetMouseButton(0)){}// マウスが画面に乗っている時(だと思う)

などを組み合わせれば複雑なタッチ処理も可能。

実機上のスクリーンのwidth,heightのピクセル値を取得するには
Screen.width
Screen.height
で調べることができます。
インストールされる端末サイズによって返される値が異なるので注意が必要です。

※とりあえずandroid端末ではGetMouseButtonDownのみ確認済み。