万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    GUIを編集中に更新? Unity

    ExecuteInEditMode
    http://unity3d.com/support/documentation/ScriptReference/ExecuteInEditMode.html

    プラグイン作成 Unity

    • 必要になりそうなクラス一覧

    http://unity3d.com/support/documentation/ScriptReference/20_class_hierarchy.Editor_Classes.html

    • ダメージ(Damage)と防御力(Armor)をGUIで調整するサンプル

    これで作ります。ドキュメントはわかりにくい。
    http://unity3d.com/support/documentation/ScriptReference/CustomEditor.CustomEditor.html

    • CustomEditorExample.js(プログラミング名もないしクラス名が書いてるけどJSです)

    →これは"/Assets/Sctipt"へ入れます。InspectorビューでGUIで表示される元ネタになります。
    →このスクリプトはどれに対してもドラッグ&ドロップ適用しません

    @CustomEditor(SimpleExampleScript)
    class CustomEditorExample extends Editor {
    
        function OnInspectorGUI() {
            // Get the place of the next available position in the script
            target.damage = EditorGUILayout.IntSlider("Damage:",target.damage,1,100);
            ProgressBar (target.damage / 100.0, "Damage");
            
            target.armor = EditorGUILayout.IntSlider("Armor:",target.armor,1,100);
            ProgressBar (target.armor / 100.0, "Armor");
            
        }
        
        // Custom GUILayout progress bar.
        function ProgressBar (value : float, label : String) {
            var size : Vector2 = GUI.skin.GetStyle("ProgressBarText").CalcSize(GUIContent(label));
            var rect : Rect = GUILayoutUtility.GetRect (size.x, Mathf.Max(size.y));
            rect = Rect(rect.x + 4, rect.y, rect.width -8, rect.height);
            EditorGUI.ProgressBar (rect, value, label);
            EditorGUILayout.Space();
        }
    }

    →変数”target”に対して何も代入されてないと思ったが、Editorクラスのtargetであり、Inspectorで実際適用されたObjectを示しています。
    http://unity3d.cba.pl/Documentation/Documentation/ScriptReference/Editor-target.html

    • SimpleExampleScript.js

    →これはInspectorビューへ表示されるエディタ用のスクリプトではない!

    var armor : int = 75;
    var damage : int = 25;

    →これは実際のプレイヤーに適用します


    Vector3のすぐ忘れるからメモ Unity

    カメラからみて前(/)か上(↑)か右(→)

    • Vector3.forward

    z軸ですね
    (0, 0, 1)

    • Vector3.right

    y軸ですね
    (0, 1, 0)

    • Vector3.right

    x軸ですね
    (1, 1, 0)

    • 自身が30度ずつ回転(C#)

    左回り

    void Update () {
      transform.Rotate(Vector3.forward * 30);
    }
    • ターゲットの周りを30度ずつ回転(C#)

    こっちは右回り

    Vector3 targetPos;
    targetPos = new Vector3(2, 1, 0); // ターゲットの座標
    void Update () {
      transform.RotateAround(targetPos, Vector3.forward, 30);
    }

    Blenderでのマウス

    Logitech V470 Bluetooth Cordless Laser Mouse 英語版(ホワイト)
    →これがよさげ
    ロジクール MX レボリューション MX-R
    →これは向いてないっぽい

    だんだん小さくする C# Unity

    transform.localScale -= new Vector3(0.9F, 0.9F, 1.0F);
    

    ↑これだと小さくなりすぎてマイナス値で逆転してしまう

    transform.localScale = transform.localScale * 0.9F;
    

    ↑こんな感じが妥当

    InvokeRepeating("Besmall", 0, 0.05F);
    

    ・呼び出し元

    void Besmall () {
      transform.localScale = transform.localScale * 0.9F;
    }
    

    ・呼び出し先
    ↑こんな感じでやる OR,

    void Update () {
      transform.localScale = transform.localScale * 0.9F;
    }
    

    Updateでやったり

    Unityクックブック(オライリー)とか作りたいな

    回転 C# Unity

    transform.Rotate(Vector3.forward * 30);
    z軸が30度になるのではなく、30度回転する。
    

    Unity メモ

    TransformDirection()はローカルのTransform情報をワールド座標系に変換
    JS

    var forward = cameraTransform.TransformDirection(Vector3.forward);

    カメラの正面方向をワールド座標でどちらを向いているかをVector3形式で取得。

    var right = Vector3(forward.z, 0, -forward.x);

    Xを-Zへ、ZをXへ置き換えれば、↓(手前)・↑(奥行き)を←・→にできるっぽい

    SendMessageはコルーチンもコール可能 Unity

    ちなみにStartCoroutineで呼んだのはStopCoroutine で止められる
    SendMessageのも止められる?

    • StartCoroutine

    http://unity3d.com/support/documentation/ScriptReference/MonoBehaviour.StartCoroutine.html

    • StopCoroutine

    http://unity3d.com/support/documentation/ScriptReference/MonoBehaviour.StopCoroutine.html