ボールを加速させるルーチンを作ってみました。
条件として、60フレームごとに最小値の加速をさせてみました。
private float speed = 10; private int count = 0; // Use this for initialization private void Start () { rigidbody.AddForce ((transform.forward ) * speed, ForceMode.VelocityChange); } // Update is called once per frame private void Update () { count++; if (count == 60) { speed += 0.1F; count = 0; rigidbody.velocity = rigidbody.velocity.normalized * speed; } }また、わかりやすくする為に上下運動だけになるようにボールの初期方向を真上にして観察します。
観察しててあれ?って思ったのはラケットにぶつかると速度が落ちてるみたいってことです。
摩擦とかなくしてるので落ちないと思ってたのですがそうではないようです。
また、このペースで加速させると早すぎるのと壁の外に飛び出してしまいました。
これでは困るので最大値と条件を変更したほうがいいって事と、ぶつかった時にスピードの 再設定をした方がいいみたいです。速度落ちない設定があればその方がいいとは思いますが 現状ではわからないので、とりあえずその方向で行きます。
private float speed = 15; private int count = 0; private const int MAX_SPEED = 45; // Use this for initialization private void Start () { rigidbody.AddForce ((transform.forward +transform.right) * speed, ForceMode.VelocityChange); } // Update is called once per frame private void Update () { count++; if (count == 60 && MAX_SPEED > speed) { speed += 0.1F; count = 0; } } // 衝突した他オブジェクトから離れた瞬間に呼ばれるメソッドです。 private void OnCollisionExit(Collision collision) { rigidbody.velocity = rigidbody.velocity.normalized * speed; }これでとりあえずは終了。次は2Dをちょっといじってみたい。
0 件のコメント:
コメントを投稿