Unityのメモ2
相変わらず手探りでUnityで遊んでます

**iPhone出力の際のフォントサイズを変更したい [#t6440f7c]
-いろいろ調べたけど埋め込み可能なフリーのフォントを利用して,フォントのビットマップを作るっぽい
--埋め込み可能なM+フォントのアウトラインをDL
--DLはhttp://mplus-fonts.sourceforge.jp/mplus-outline-fonts/index.html
--mplus-2c-medium.ttf をプロジェクトにコピー
--Unity内でフォントを選択し,サイズを適当に変更しApplyをクリック(これでビットマップフォントができるのかな,,,)
---Fontサイズ18でもけっこう小さい,,,
--GUIskinを作成
--GUI系のスクリプトにGUISkinを適用させる
---楽したくてPlaymaker使てます.でこのGUISkinをGUIのState内でGlobalに適用させてます
--GUISkinのInspectorの一番上にこのフォントを選択させる
--見た目は変わらんけどiPhoneでビルドすると大きさが分かるっぽい
-iPhone5でではちゃんと表示されるのにiPhone4では文字化け■■こんな感じで表示される→iPhone4に許されているテクスチャサイズが2048×2048なのが原因→フォントサイズを20(2048×2048になる)に変更しApplyしてビルドするーこれでうまくいった
**iTweenのモーションスピードを変更したい [#s46afd36]
--iTweenのエクステンションを10$で買うとサンプルプログラムがある
**MAC OSXでノーマルマップ [#p70e1df2]
-けっこうないが,これが使えそう
--http://crazybump.com/mac/
**Unity4がインストール後起動しない(Macのみの問題か不明)MacOSX10.7.7,Unity4.1.0 [#g56fec5a]
-Unity4をインストール後,''tx_id is invalid''などと出て起動できない件
#ref(./unity4.jpg,nolink)
--原因ーおそらくライセンスサーバに接続できない
--対策ーネットワークを切ってUnityを起動、Manual Activationの画面が出るのでそれを続行する

**(eng)Unity 4 , not start on Mac OSX [#x8c98150]
-Unity4 not start on Mac OSX, after install.
-error message is "tx_id is invalid".
#ref(./unity4.jpg,nolink)
++Close error message, Unity will quit.
++Disconnect all network connection. including LAN, turn off Wifi,,,
++Launch Unity4, Manual Activation and activation url window will open.(window A)
++Click Manual Activation, save License request file.
++Open Activation URL.(find in winodw A)
++Upload request file.
++Login with unity Account.(or create new account)
++You can download license file.
++save it.
++Back to window A, Load license file.
++Unity will start, If freeze Unity Re launch unity4.
**PlayMakerのTrigger Eventが動かない [#o795d7d7]
--PlaymakerのFSMが付いているほうにColliderをつけて,Is TriggerをON
--Enterされるオブジェクト側にはCharacter Controllerが必要
**Playmakerからスクリプトに何か送る [#g1dae2fe]
-変数送るのはまだ成功していない
-java内のfunctionを叩くのは成功,以下メモ
--scriptに動作項目を書く
-例 このfunctionを実行するともう一方のキャラも停止(speed = 0)する
function gameover(){
speed = 0;
}
--playmakerのsend messageのメッソド名にこの場合''gameover''を''手入力(コピペ)''する.gameobject指定してプルダウンメニューから出せそうだったけどうまくいかなかた --もちろんこのfunctionはupdate項目から外す
**WebPlayerで出したときにレベル遷移が遅くてローディング画面を出したい [#ed9f5554]
--ローディング画面はまだ出していませんが,%表示でできる
--最初の画面にGUI Textを作成し,それにアサインする
--読み込みたいシーン名を””内に入れる(レベル番号ではだめだった)
--参照元忘れました,たぶんUnityのHelp
--全スクリプト(Java)
 var percentageLoaded : float = 0;
 
 function Update() {
     if(Application.GetStreamProgressForLevel("読み込みたいシーン名") == 1) {
         guiText.text = "ゲームの準備完了!!";
     } else {
         percentageLoaded = Application.GetStreamProgressForLevel("読み込みたいシーン名") * 100;
         guiText.text = percentageLoaded.ToString() + "%読み込みました"; 
     }
 }
**iOSスタンダード版でムービーを見せる [#z01ea6f5]
--ムービーテクスチャはPro版でないと使えない.ということで外部アプリで動画を見せます
--これでYoutubeアプリが開いてYoutubeの動画が再生されます/iOS6+ipadmini動作確認済み/後は動画見た後元のアプリに戻ってくれるのを祈るばかり,,
--全スクリプト(java script)
 #pragma strict
 function Start () {
 }
 function Update () {
 }
 function OnGUI () {
 
 	// make gui button and play movie
 	if (GUI.Button (Rect (20,80,120,60), "Play Movie")) {
 		Application.OpenURL("http://youtu.be/J3NyptGJzLo"); 
 	}
 }
**StandardAssetsのJoystickでMecanimを使う [#w5e206cb]
--JoystickのCameraRelativeのreplace hereの所にキャラクタの fbxを入れる
--よく分かっていませんがこれで動いています(java script 全文,,,のはず)
 #pragma strict
 
 public var characterController : CharacterController;
 
 var anim: Animator;
 
 //ん?この変数使ってないと思う
 static var Speed : float = 0.0;
 
 function Start () {
         anim = GetComponent(Animator);
 }
 
 function OnAnimatorMove() 
 {
 //characterControllerの移動速度を検出してoverallContorllerにfloatで入れる
 var overallSpeed : float = characterController.velocity.magnitude;
 //MecanimからSpeedでoverallSpeedの値を呼び出せるようにする/必ず必要
 anim.SetFloat("Speed",overallSpeed);
 }
--これでMecanimから呼び出せるので設定すればIdle,walk,Runを切り替えられます/しかしこんなに簡単だったとは,,,MotionBuilder並に使いやすい機能ですね

**Softimageのリグ付きで読み込んだエンベロープをMecanimで使用する [#b85562a4]
--手の所が赤でNG出るので,指を選択して,指のボーンをすべて設定しなおるだけ
--これでAssetStoreのRawMocapData(無料)のアニメーションをアサインしてもしっかり動きます(指のアニメーションはないですが,Softimageで言ういわゆるRelaxの状態になるようです)
**Skinned Clothの設定とかメモ [#y5484fe1]
--日本語訳見ても分からんので少しずつ
--エンベロープかけたキャラクタ作成
--この際,スカート(SkinnedClothかけたいとこ)はマージしていいのか、キャラクタ内の別オブジェクトがいいのか不明(でも別だとエンベロープできないかな?)明日実験
--ポリゴンオブジェクトで SkinnedClothを設定。上位階層のオブジェクトでもなぜか設定できてしまうが、動きがおかしくなったりする。必ず下位階層のポリゴン本体にアサインする。
--細かい設定は研究中。いまんとこわりと軽い。
**SoftimageのモデルをUnityでKinectにラップするボーンの組み合わせ [#yff786fe]
++SIのBipedRigをFBXで出力(CrossWalk)する
++キャラクタにkinectModelController.csをアサインして、ヒエラルキーにkinectPrefabをドロップし、kinectModelController.csのSWにアサインします。プロジェクト側からアサインするとエラー出る
++キャラクタにボーンのリストが下図のように出るので、下図のように各ボーンをアサインする(ただし腰のあたり怪しい)
-&ref(./si-kinect.jpg,50%);(クリックで拡大します)
**Unityでランキング(ネットワークでサーバに記録) [#z0cf3cc9]
--[[これを参照>http://wiki.unity3d.com/index.php?title=Server_Side_Highscores]]
---PHPはPDOの方がしっくり動いた(特にdisplay.php)
---リンク先のsqlクエリ,PHPは所定の場所をサーバに合わせて変更すれば動くが,JavaScript - HSController.jsはこのままでは動かないので(CSは未検証)以下に変更した(全文コピペして入れ替えで)
 private var secretKey:String="00000"; // Edit this value and make sure it's the  same as the one stored on the server
 var addScoreUrl="your server post.php?"; //be sure to add a ? to your url
 var highscoreUrl="your server/display.php"; 
 var attatch:GameObject;
 
 function Start() {
	getScores();
 }
 
 static function Md5Sum(strToEncrypt: String)
 {
	var encoding = System.Text.UTF8Encoding();
	var bytes = encoding.GetBytes(strToEncrypt);
 
	// encrypt bytes
	var md5 = System.Security.Cryptography.MD5CryptoServiceProvider();
	var hashBytes:byte[] = md5.ComputeHash(bytes);
 
	// Convert the encrypted bytes back to a string (base 16)
	var hashString = "";
 
	for (var i = 0; i < hashBytes.Length; i++)
	{
		hashString += System.Convert.ToString(hashBytes[i], 16).PadLeft(2, "0"[0]);
	} 
	return hashString.PadLeft(32, "0"[0]);
 }
 
 function postScore(name:String, score:int) {
    //This connects to a server side php script that will add the name and score to a MySQL DB.
    // Supply it with a string representing the players name and the players score.
       var hash=Md5Sum(name + score + secretKey);
 
    var highscore_url = addScoreUrl + "name=" + WWW.EscapeURL(name) + "&score=" + score + "&hash=" + hash;
    // Post the URL to the site and create a download object to get the result.
    var hs_post = WWW(highscore_url);
    yield hs_post; // Wait until the download is done
    if(hs_post.error) {
        print("There was an error posting the high score: " + hs_post.error);
    }
 }
  
 // Get the scores from the MySQL DB to display in a GUIText.
 function getScores() {
    attatch.guiText.text = "Loading Scores";
    var hs_get = WWW(highscoreUrl);
    yield hs_get;
    if(hs_get.error) {
    	print("There was an error getting the high score: " + hs_get.error);
    } else {
        attatch.guiText.text = hs_get.text; // this is a GUIText that will  display the scores in game.
    }
 }
**配列を分離 [#t0f165ed]
--上のサーバ側に置いたハイスコアと名前は,wwwで取得すると,[名前]タブ[スコア]改行 となる.これを1つのストリングに入れて,名前とタブで区切って配列に入れるスクリプト
 rawData:String;//www.textを使ってrawDataに文字列をWEBから取得
 myArray:String[];//配列を作成
 myArray = rawData.Split(["\n","\t"], 1);//改行=\n,タブ=\tで分割
**文字列を分割して配列に収納(Java) [#m8476e65]
 sample = rawData.Replace("\t" , ",");//タブをカンマに変更
 sample = rawData.Split("\n"[0]);//改行コードで分割
**文字列操作 [#v14765eb]
 sample = mystring.Substring(0, 3);//最初の3文字を取得
**オブジェクトを使ってマウスアップのようなこと [#wdb88816]
-コリジョンでなくトリガーを使う
-[[参考サイト>http://code.google.com/p/vga-unity/wiki/GP10UnityCourse08]]
**Animetoコントロール [#t0450e5a]
 function SetJump(value: boolean) {
 Jump = value;
 animator.SetBool("Jump", value);
 }

**MecanimAnim [#sfa1901a]
 #pragma strict
 var animator3 : Animator;
 function SetJump(value: boolean) {
 Jump = value;
 animator3.SetBool("jump", value);
 }
**Mecanim2 [#t81012b3]
 #pragma strict
 public var characterController : CharacterController;
 var anim: Animator;
 function Start () {
        anim = GetComponent(Animator);
 }
 function FixedUpdate () {
     if(Input.GetButtonDown("Jump"))
       {
               anim.SetBool("Jump", true);
       } else {
                anim.SetBool("Jump", false);
       }
 }
**get z position to debug log [#z38c318b]
 #pragma strict
 var test:float;
 function Start () {
 
 }
 function Update () {
 test = this.transform.position.z;
 Debug.Log (test);
 }

**Get XYZ pos [#xf780674]
 #pragma strict
 var test:float;
 var test2:float;
 var test3:float;
 function Start () {
 
 }
 
 function Update () {
 test = this.transform.position.x;
 test2 = this.transform.position.y;
 test3 = this.transform.position.z;
 Debug.Log (test + ","+ test2 + "," + test3);
 }
----
[[トップに戻る>FrontPage]]

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