ライトのプロパティでピクセルライティングを使うと重くなる。
androidでは頂点ライティングを使うのがよさげです。
ライトのプロパティでピクセルライティングを使うと重くなる。
androidでは頂点ライティングを使うのがよさげです。
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のみ確認済み。
Android実機で日本語が表示されない等の問題がある様子なので日本語対応のフォントIPAfont(IPAゴシック)を利用してテスト表示等までの流れを記載しておきます。
今回は「ipag.ttf」のフォントを利用します。このファイルをプロジェクトウィンドウにドロップします。 ドロップしたファイルのInspectorで、
サイズ(任意)
色(任意)
Character(ユニコード)
Font Rendering(アンチエイリアス無し)
を設定して、Applyをクリックします。
GameObject→Create Other→GUI textを選択してオブジェクトを生成し、Inspecterで初期テキストの内容やアンカーを設定し、フォントを先ほど設定した「ipag」に変更します。
スクリプトからの内容の更新は
this.guiText.text = “コードから日本語を打ちこみます。\n改行もテストします。”;
などとします。※改行は「\n」で行えます。
※フォントのサイズはそれぞれのサイズのフォントを用意して利用するものとします。
プログラム側でサイズ設定やらをごにょごにょしましたがandroid端末上でフォントが滲んだりして良い結果は得られず。
テライン(地形)を作成する手順を記載します。
Terrain→Create Terrainをするとテラインオブジェクトが配置されます。
このテラインを選択状態にして
Terrain→Set Resolutionを選択するとテライン情報を設定する画面が現れます。
○Terrain Width = 500
○Terrain Height = 50
○Terrain Length = 500
上記を設定します。これでテラインのサイズが決まりました。
今回はアンドロイド向けに開発するとします。
File→Build Settingを開き、プラットフォームからAndroidを選択しSwitch Platformをクリックします。
その後、Player SettingをクリックするとInspectorが開くのでカンパニーネーム、プロダクトネーム、アイコン、その他を設定します。
ここでアンドロイド上での画面の縦横固定設定、上部バーの表示、非表示などの設定が可能になる様子。
対象がAndroid4.0以下のバージョンでも、Android SDK 4.0がインストールされていないと怒られる。よってAndroid SDKのインストールフォルダ以下にある、「SDK Manager.exe」を起動してインストールします。
Other SettingsのIdentificationのBundle Identifierに設定しないと怒られる。
端末の向きはLandscape Leftを選択する。is06ではなぜかLandscape Rightを設定してもポートレート状態のままだった。
開発中のプレビューについて、Gameタブに切り替えて、Maximie on Playを有効にします。Free Aspectを選択すると、さまざまな画面サイズが現れるので対象としている480×800の横向きになるものを選択します。※これらはターゲットがAndroidになっていると選択できるっぽい。