タグ付けされた質問 「lerp」

3
ループする値(色相や回転など)を切り替えるにはどうすればよいですか?
デモを見る ジョイントをキャンバスの中心の周りで、マウスポインターの角度に向かってスムーズに回転させようとしています。私が持っているものは動作しますが、マウスの角度に到達するために可能な限り最短距離をアニメーション化したいです。この問題は、値が水平線(3.14および-3.14)でループするときに発生します。その領域にカーソルを合わせて、方向がどのように切り替わるかを確認します。 関連コード // ease the current angle to the target angle joint.angle += ( joint.targetAngle - joint.angle ) * 0.1; // get angle from joint to mouse var dx = e.clientX - joint.x, dy = e.clientY - joint.y; joint.targetAngle = Math.atan2( dy, dx ); 「ギャップを越えて」最短距離で回転させるにはどうすればよいですか?

6
複数の色を色分けする方法は?
Unityドキュメントでこれに対する解決策を見つけるのはかなり難しいと感じました。 Color.Lerp(Color a, Color b, float t) は、ステップtに従って色を徐々に変化させ、Color bの最終値を与える関数です。 どうすれば複数の色の間を次々と検索できますか?
12 c#  unity  color  lerp 

3
Lerping関数でTime.deltaTimeを使用する理由
私の理解では、Lerp関数は、との間の3番目の値()を使用して、2つの値(aとb)の間を補間します。で、値aがで、返される値は、返されます。値0.5で、途中の間とが返されます。t01t = 0t = 1bab (次の図は、滑らかなステップで、通常は3次補間です) 私はフォーラムを閲覧していて、この回答で次のコード行を見つけました。transform.rotation = Quaternion.Slerp(transform.rotation, _lookRotation, Time.deltaTime); 「なんてばかだ、彼にはわからない」と私は思ったが、40以上の賛成票があったので、試してみて、十分に機能した。 float t = Time.deltaTime; transform.rotation = Quaternion.Slerp(transform.rotation, toRotation, t); Debug.Log(t); との間0.01でランダムな値を取得し0.02ましたt。関数はそれに応じて補間すべきではありませんか?これらの値が重なるのはなぜですか?Lerpについて私が理解していないのは何ですか?

2
オブジェクトの動きを滑らかにするために、実際に補間はどのように機能しますか?
過去8か月間、同じような質問をいくつかしましたが、あまり喜びがなかったので、質問をより一般的なものにします。 OpenGL ES 2.0のAndroidゲームを持っています。その中に私は次のゲームループを持っています: 私のループは固定時間ステップの原理(dt = 1 / ticksPerSecond)で動作します loops=0; while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){ updateLogic(dt); nextGameTick+=skipTicks; timeCorrection += (1000d/ticksPerSecond) % 1; nextGameTick+=timeCorrection; timeCorrection %=1; loops++; } render(); 私の統合は次のように機能します: sprite.posX+=sprite.xVel*dt; sprite.posXDrawAt=sprite.posX*width; 今、すべてが私が望むようにかなり機能します。オブジェクトを特定の距離(画面の幅など)で2.5秒で移動するように指定できます。また、ゲームループで許可するフレームスキップのため、ほぼすべてのデバイスでこれを実行でき、常に2.5秒かかります。 問題 ただし、問題は、レンダリングフレームがスキップされると、グラフィックが途切れるということです。それは非常に迷惑です。フレームをスキップする機能を削除すると、すべてが好きなようにスムーズになりますが、異なるデバイスでは異なる速度で実行されます。したがって、それはオプションではありません。 フレームがスキップする理由はまだわかりませんが、これはパフォーマンスの低下とは関係がないことを指摘したいと思います。コードを1つの小さなスプライトに戻し、ロジックはありません(必要なロジックは別として)スプライトを移動します)と私はまだスキップされたフレームを取得します。そして、これはGoogle Nexus 10タブレット上にあります(そして上記のように、デバイス間で速度を一定に保つためにフレームスキップが必要です)。 だから、私が持っている他の唯一のオプションは、内挿(または外挿)を使用することです。そこにあるすべての記事を読みましたが、それがどのように機能するかを理解するのに実際に役立ったものはなく、試行したすべての実装は失敗しました。 1つの方法を使用して物事をスムーズに移動させることができましたが、衝突をめちゃくちゃにしたため、実行できませんでした。レンダリングはレンダリング時にレンダリングメソッドに渡され、その中で処理が行われるため、同様の方法で同じ問題を予測できます。したがって、衝突が位置を修正した場合(キャラクターが壁のすぐ隣に立っている)、レンダラーはその位置を変更して壁に描画できます。 だから私は本当に混乱しています。レンダリングメソッド内からオブジェクトの位置を変更するべきではないと人々は言っていますが、オンラインのすべての例でこれが示されています。 私は正しい方向へのプッシュを求めています。これらを何度も読んだので、人気のゲームループの記事(deWitters、Fix your timestepなど)にリンクしないでください。私はしていない私のためのコードを記述するために誰を尋ねます。補間が実際にいくつかの例でどのように機能するかを簡単な言葉で説明してください。次に、アイデアをコードに統合し、必要に応じてより具体的な質問をします。(これは多くの人が悩んでいる問題だと思います)。 編集する いくつかの追加情報-ゲームループで使用される変数。 private long nextGameTick …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.