2017-02-28 5 views
0

私は最近、ゲーム開発の新しいチュートリアルに従っています。 LibGdxにVector2クラスのsclというメソッドがあります。ここに私のコードの断片です。私の質問は。それは何をするためのものか。あなたは詳細な説明ができる場合。いくつか追加してください。LibGdxでVector2.sclメソッドとは何か

public void update(float dt){ 
    if(position.y > 0) 
     velocity.add(0, GRAVITY); 
    velocity.scl(dt); 
    Gdx.app.log("scl dt 1", Float.toString(velocity.y)); 
    position.add(0, velocity.y, 0); 
    if(position.y < 0) 
     position.y = 0; 
    velocity.scl(1/dt); 
} 
+0

メソッドのjavadocsは、それらが何をするかを説明します。 Eclipseを使用している場合は、メソッドの上にマウスを置くと、ドキュメントが表示されます。 IDEASまたはAndroid Studioでは、メソッドをAltキーを押しながらクリックしてドキュメントを表示できます。 – Tenfour04

+0

私の説明はあまりにも複雑すぎました。私はスケールが何をするのか理解できませんでした。それは掛け算か分裂か何か? –

+0

xとy成分にメソッドに渡す引数を単に乗算します。そのソースは 'Vector2 scl(amount){this.x * = amount; this.y * =金額;これを返す。 } ' –

答えて

0

scl()Vector2クラスのメソッドをオーバーロードされています。

1. public Vector2 scl(float scalar) 

ベクトルをスカラ量でスケールして返します。

2. public Vector2 scl(float x,float y) 

ベクトルをスカラーで乗算し、それ自身を返します。

3. public Vector2 scl(Vector2 v) 

ベクトルを別のベクトルでスケールし、それ自身を返します。

上記のコードでは、ベクトルをdt単位でスケーリングしています。

dtとは何ですか?

dtは、前回の開始から現在の呼び出しの開始までの時間で、render()です。それは単に現在の時刻を取り、前の時刻をそれから減算します。この値の単位は秒です。

+0

私はそのコードを以前から何度か見たことがあります - チュートリアルの一部でなければなりません。速度を変位にスケーリングし、それをその位置に加え、それを速度に戻すことは私には間違っているようです。おそらく、それは定数と比較すると、等価が速度に対してはうまくいかないというような、わずかな誤差も導入されます。 'position.mulAdd(velocity、dt);を使うほうが意味があります。 – Tenfour04

+0

私はposition.mulAdd(velocity、dt)もお勧めします。スケーリングとスケーリングのスケーリングの代わりに。 – Aryan

+0

GRAVITYの与えられた値が15であればSir。velocity.scl(dt)の後の速度のxとyの値は何ですか? –

関連する問題