万年素人からHackerへの道

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

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

    重力で貫通しない工夫 Unity

    ジャンプし過ぎて地面を貫通とかありがち。
    おそらく、
    1. 判定を厳しくする
    2. 高さy:0以下の時に強制的に加速を0にして座標をy:0に強制的にする。
    3. 速度を制限。
    4. 下向きのRaycastを当てて、地面だったら止める。

    1と2は地面の高さが変わるゲームでは使えない。
    4は、Raycast使うので重くなりそう。
    なので現実的には3かな?と思った。

    最高速度を制限する方法。

    URL: http://answers.unity3d.com/questions/265810/limiting-rigidbody-speed.html

        // 最大スピード
        public float maxSpeed = 200.0f;
        private Rigidbody myRigidbody;
        void Awake ()
        {
            // 毎回rigidbodyを使うのは処理が重そうなので変数へキャッシュ
            myRigidbody = this.rigidbody;
        }
     
        void FixedUpdate ()
        {
            if (rigidbody.velocity.magnitude > maxSpeed)
            {
                myRigidbody.velocity = Vector3.ClampMagnitude (myRigidbody.velocity, SAFETY_MAX_SPEED);
            }
        }
    

    これでできるっぽいね。