2017-02-10 4 views
-1

私はUnity3dをしばらく学んだ後、カメラフォローとバックグラウンドムーブについての質問がスムーズではありません。私はragidbody2dでキューブを作成し、次にカメラを作るために2つのダフュエントな方法を使用します: a。私は立方体のカメラを作る。 b。私はスクリプトを使用してカメラを制御します(遅延更新)UNITY3dカメラフォローとバックグラウンドムーブがスムーズでない

スプライトに変換される画像を追加します(サイズは1024 * 512です)。私はそれらをバックグラウンドにする。

両方のメソッドに同じ問題があり、背景の移動がスムーズではありませんが、まったくスムーズではないため、時々表示されます。

私は、バックグラウンドが滑らかではありません高速移動の役割で発見公式2dの例を試してみました。しかし、BadlandのようなUnityによって作られたゲームがいくつかあります。私はそれを再生すると、この問題はありません。この問題を解決する方法はわかりません、カメラは設定されていますか?はしか?テクスチャのタイプ?圧縮された方法?またはいくつかのプラグインを使用する必要がありますか? 助けてください。ありがとうございます。

答えて

0

これは、使用しているアップデートが同期されていないためです。

メインアップデート(それぞれのフレームがトリガされ、それらの間の時間が異なる(Time.deltaTime))、FixedUpdate(物理アップデートごとにトリガ、固定時間最後に)。

物理学の影響を受ける剛体を追跡しようとする場合は、カメラの更新機能をLate-またはFixedUpdateに設定することをお勧めします。あなたがそれに剛体の補間を設定している場合

あなたはアップデート機能でそれを使用することができインスペクタです:rigidodyが、それはすべてのX一定時間位置だのアップデートを取得し

、アップデート機能が5回ときをトリガすることができますFixedUpdateは一度だけ呼び出されたか、またはその逆です。これにより奇妙な結果が得られるので、剛体の補間を設定すると、同期していない更新の間に物事が滑らかになります。

また、Lerpメソッドを使ってスムーズにカメラを移動することができます。例:これは

1

使用を助けhere

希望をlerpingについて

void Update() { 
    Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, targetPosition, Time.deltaTime * 5); 
} 

よりは "LateUpdate" LateUpdateは、すべての更新機能が呼び出された後に呼び出されます。これは、スクリプトの実行を順序付けるのに便利です。たとえば、フォローカメラは、Update内で移動した可能性のあるオブジェクトを追跡するため、LateUpdateで常に実装する必要があります。

0

私は全くカメラを動かさないという別の問題を発見しました。バックグラウンドとしていくつかの写真を持っているGameObjectを動かすだけです。移動ゲームオブジェクトのスクリプトは

this.transform.Translate(Vector3.right * Time.deltaTime * 40.0f, Space.World); 

または

Vector3 pos = this.transform.position; 
pos.x += (100.0f * Time.deltaTime); 
transform.position = Vector3.Lerp(transform.position, pos, Time.deltaTime * 50); 

reusltがすべてで、それを視覚的に遅れて滑らかされていない背景の動きであるが、完全に滑らかではない

更新()であります時々表示されます。

いくつかの設定が間違っていますか?グラフィックスのエミュレーションなど?

関連する問題