以下のカメラは、2Dキャラクターをたどることになっている、ここでコードカメラがないスムーズ
void LateUpdate()
{
var to = target.position;
to.z = transform.position.z;
var newPos = Vector3.Lerp(transform.position, to, speed * Time.deltaTime);
transform.position = newPos;
newPos.z = to.z;
Debug.DrawRay(newPos, Vector3.up, Color.green, 5);
}
は、私はまた、文字やカメラの位置を描くです。私は間違って何をしますか
レッドラインは、文字の位置である、と緑の線は
カメラの位置ですか?
UPDATE:
私が何か面白いものを考え出しました。下の写真の緑の線は、LateUpdateメソッド内でVector3.Lerpによって移動されるカメラの位置です。黄色の線は、FixedUpdateメソッド内でキャラクタのRigidbody2Dに設定したキャラクタの位置で、赤い線はカメラのLateUpdateから見たキャラクタのトランスフォームの位置です。
私が言いたいことは文字の実際の位置は、そのRigidbody2Dコンポーネントによって駆動されていることです。 Rigidbody2Dの "Interpolate"オプションを変更することで、異なる結果を得ることができます。
問題は、Rigidbody2Dの位置にFixedUpdateごとに同じ値を追加しても結果が一貫していないことです。新しい位置と古い位置との距離が、あるべき位置よりも大きい場合があります。
これに加えて、FixedUpdateとは異なる更新レートを持つLateUpdateメソッドでカメラの位置を設定します。したがって、Rigidbody2Dではなく、キャラクタの変換に新しい位置を設定しても、キャラクターのスピードがフレームごとに異なるため、camereは滑らかではありません。
今のところ私には1つの解決策があります。その変換にはなく、そのFixedUpdateではなく、LateUpdateで部屋のRigidbody2D
- 。
しかし、カメラの位置がFixedUpdateに設定されているので、それはあるかもしれないほどスムーズではありません、また、i」は
キャラクタの衝突検出がうまくいくかどうかは確かではありません。キャラクタの位置を変換に直接設定しているからです。
あなただけの2Dフォロー(ちょうどセットポジションをサポートするために変更を加える必要があり、UnityWikiからSmoothCameraスクリプトを試してみてくださいz軸に沿って一定)。ここにリンクがあります: [UnityWiki](http://wiki.unity3d.com/index.php?title=SmoothFollow2&oldid=13960) または [UnityWikiCached](http://webcache.googleusercontent.com/search?q=キャッシュ:iYKRX3r1TwUJ:wiki.unity3d.com/index.php/SmoothFollow2+&cd=1&hl=en&ct=clnk&gl=in&client=firefox-b-ab) –
私はシンプルなスクリプトと改良されたものを試しましたが、まだ問題があります。問題はコード内ではなく何かにあります –
デバイスのみ、またはエディタとデバイスの両方でスムーズではありませんか? また、これをAwakeのスクリプト 'Application.targetFrameRate = 60; –