*Unity Tips [#a057f0e5]
#contents
----
UnityのTipsまとめ(個人的な覚え書き)
-全てコピペして動作するように”全文”掲載しています.

**プログラムもできないのにScript [#yd17edfa]
-プログラム描けないのにscriptしてるニャーのメモ
***同じオブジェクトを繰り返し作成(クローン)するスクリプト [#ycd1de66]
--種別はJava Scriptです.function Updateの{}の中に書くとフリーズ(無限ループで暴走)します
--prefab(例えばcubeを配置してAsste>create>prefabでprefab化しておく)が必要
--スクリプト作成してprojectに入れておき,new empty game objectをシーンに作成してそこにスクリプトをassignし,inspectorでtargetにクローン作成したいprefabを指定します
--forの中の10はクローン作成数の上限.20にすると20個作成 1.1は作成位置のオフセット X(横)方向に1.1の場所からクローン作成.なので1.0のcubeのprefabだと隙間が0.1できます
---ソース(一部じゃなく全文)
 //Start clone script
 var prefab : Transform;
 for (var i : int = 0;i < 10; i++) {
 Instantiate (prefab, Vector3(i * 1.1, 0, 0), Quaternion.identity);
 }
 //end clone script
 function Update () {
 }
---実行画面(prefab myboxをクローン化,色はライトの関係でグラデーションかかってみえます)
~&ref(./clone.jpg,50%);
---参照元
[[http://unity3d.com/support/documentation/ScriptReference/Object.Instantiate.html>http://unity3d.com/support/documentation/ScriptReference/Object.Instantiate.html]]
***Unity if文の覚え書き [#ue126f96]
-if文の基本
-種別 java script
--初期設定0の数値を9まで1ずつカウントアップ
---ソース(一部じゃなく全文)
 var cubecount : int = 0;
 function Update () {
  if (cubecount < 9) {
  //your process
  
  //example process
    print(cubecount);
  // count up process
    cubecount = cubecount+ 1;
  }
  else {
  // your process
    print("end");
  }
  }
***Unity GUIとライトの色変更 [#l564ed5d]
-種別 Java script
-ライトの色をスライドバーでリアルタイムに変更する
--スクリプトはライトオブジェクトにassignしてください
--WEBで実際にプレイする
---[[RGBスポットライト(光りの足し算,加法混色)>http://www.miauen.com/unity/rgb_light/rgb_light.html]]※要Unity Player
--ソース(1スクリプトの全文)
 var hSliderValue : int = 0;
 var akairo : float = 0.0;
 
 function OnGUI () {
 hSliderValue = GUI.HorizontalSlider (Rect (25, 25, 100, 30), hSliderValue, 0, 255);
 akairo = hSliderValue / 256.0;
 // slider value display
 GUILayout.BeginArea (Rect (130,20,150,70));
 GUILayout.BeginVertical();
 GUILayout.Box("R(8bit=0-255): " + Mathf.Round(hSliderValue));
 GUILayout.EndVertical();
 GUILayout.EndArea();
 }
 
 function Update () {
 light.color = Color(akairo, 0.0, 0.0);
 }
***動くテクスチャ [#e168ce99]
-テクスチャのオフセット値をtimeでかけ算して表面を動かす
-Java scriptです
--script化して,事前にオブジェクトにアサインし,インスペクタでテクスチャを選択しておいてください
---ソース(全文)
 //texture select
 var mytexture : Texture;
 //refresh rate set up
 var refreshtime : float = 0.1;
 
 function Update () {
 //texture render
 renderer.material.mainTexture = mytexture;
 //refresh rate * time 
 var xoffset : float = Time.time * refreshtime;
 //moveing texture use offset
 renderer.material.mainTextureOffset = Vector2 (xoffset, 0);
 renderer.material.mainTextureScale = Vector2 (0.5,0.5);
 }
---参照元[[http://unity3d.com/support/documentation/ScriptReference/Material-mainTexture.html>http://unity3d.com/support/documentation/ScriptReference/Material-mainTexture.html]]

***カメラの切り替え [#mb274078]
-種別Java script
--スクリプトを空のゲームオブジェクトに入れるだけ.事前にカメラをふたつ作っておき,インスペクタでターゲット(カメラ2つ)を設定する必要あり.
--Mouse Lookで酔うのとGUIを操作するためにMouse Lookを切る必要があり,カメラを切り替えることで対応するために使用
--このスクリプトは http://d.hatena.ne.jp/anchan828/20110118/1295316465 さんのスクリプトを元にほんの少し改造しています(ありがとうございます)
---ソース(全文)
 var cameraA : GameObject;
 var cameraB : GameObject;
 cameraA.camera.enabled = true;
 cameraB.camera.enabled = false;
  function OnGUI () {
 // background box
 GUI.Box (Rect (Screen.width -110,10,100,90), "Cam Type");
 // first button
 if (GUI.Button (Rect (Screen.width -100,40,80,20), "RGB CAM")) {
 cameraA.camera.enabled = true;
 cameraB.camera.enabled = false;
   }
 
 // second button.
 if (GUI.Button (Rect (Screen.width -100,70,80,20), "Move CAM")) {
 cameraA.camera.enabled = false;
 cameraB.camera.enabled = true;
   }
 }
***WEB上のテクスチャを入れ替える [#sf991fc5]
-子ども向けのワークショッププログラムを作っていたのですが,[[Playmaker>http://www.hutonggames.com/]]のWWWobjectがフリー版では動作しない(先月は動作したんだが,,)のであわてて作成
-Javascriptです(全文です)
-Asset>Create>Javascriptで適当な名前の(グローバル変数は使ってないので)スクリプト作成し,ダブルクリック.MonoDvelopperが開くので,最初っから描かれているプログラムを全部消して下記に全部入れ替えして保存.Unityに戻ってScriptをMaterial設定してあるオブジェクトにドラッグ&ドロップします.再生ボタンを押すとダウンロード待ちのためゲーム画面表示まで少し時間がかかりますが動作します.WEBPlayerでも動作しました.WEB Playerの場合は,最初テクスチャ無しの白いオブジェクトが出て,WEBからDL終わったらテクスチャが自動的に貼り付けられます.その後ボタンを押すと入れ替えられます.UVマッピングはマテリアルに入っているので,適正なテクスチャであれば,ぴったり入れ替えられます.
--ソース(全文)
 #pragma strict
 //set texurl
 var texurl : String = "";
 
 //set texture variable 
 var yourtex : Texture;
 var yourtex2 : Texture;
 
 function Start () {
      // Start a download of the given URL
      texurl = "http://filmm.info/festa/1.png";
      texurl = "http://miauen.com/texture/1.png";
    var www : WWW = new WWW (texurl);
    //FIX URL example
    var www2 : WWW = new WWW("http://filmm.info/festa/2.png");
    var www2 : WWW = new WWW("http://miauen.com/texture/2.png");
     // Wait for download to complete
   yield www;
   yield www2;
 
 yourtex = www.texture;
 yourtex2 = www2.texture;
     // assign texture
    renderer.material.mainTexture = yourtex;
 }
 
 function OnGUI () {
 	//GUI.Label (Rect (220, 25, 290, 30), texnumber);
 	//hSliderValue = GUI.HorizontalSlider (Rect (25, 25, 180, 30),  hSliderValue, 0, 90);
 	//texnumber = "" + hSliderValue;
 
 //Make a button , replace texture yourtex or yourtex2
 if (GUI.Button (Rect (20,40,90,20), "SET TEXTURE")) {
 if (renderer.material.mainTexture == yourtex) {
 renderer.material.mainTexture = yourtex2;
 		} else {
 			renderer.material.mainTexture = yourtex;
 }
 }
 
 }
 
 function Update () {
 }
-参考サイトhttp://d.hatena.ne.jp/nakamura001/20110725/1311622661
***オブジェクトのスピード検出 [#wfbcce78]
CharactorControllerをアサインしたGameObjectの移動速度を出します.Y軸の値はコメントアウトしています.(Javascript)
--ソース(全文)
 #pragma strict
 
 static var horizontalSpeed : float = 0.0;
 
 
 function Start () {
 
 }
 
 function Update () {
     var controller : CharacterController = GetComponent(CharacterController);
     var horizontalVelocity : Vector3 = controller.velocity;
     horizontalVelocity = Vector3(controller.velocity.x, 0, controller.velocity.z);
     
     // The speed on the x-z plane ignoring any speed 
     horizontalSpeed = horizontalVelocity.magnitude;
     // The speed from gravity or jumping
     //var verticalSpeed : float = controller.velocity.y;
     // The overall speed
    // var overallSpeed : float = controller.velocity.magnitude;
    
    
   //print(horizontalSpeed);
   Debug.Log(horizontalSpeed);
 }
--ソースhttp://docs.unity3d.com/Documentation/ScriptReference/CharacterController-velocity.html
***1秒間にn個プレファブを作る? [#f34471e9]
--http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.Invoke.html
---Invoke("LaunchProjectile", 2);はメソッドLaunchProjectileを1秒に2回やれ
--- instance.velocity = Random.insideUnitSphere * 5;は3Dのランダム座標生成(*5ってなんや)
***Flashで見れるようにしたいので,TerrainをObjに変換したい [#n9369880]
-Flashで出力すると多くのパソコンでみられるー,あれTerrainがFlash出力対応してないっぽい,うんじゃobjに変換すっか
--http://wiki.unity3d.com/index.php?title=TerrainObjExporter
-Aeestの中に''Editot''というフォルダを作成し,スクリプトは''ExportTerrain''にする.でないと動かない
-Terrainを選択し,メニューバーのTerrainからこのスクリプトを実行
-出力されるので,読み込んで既存のと置き換え
-なんか回転して出力されるっぽい,,,
----
[[戻る>FrontPage]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS