為什麼精靈跟隨相機有延遲和平滑?

維利菲奇

我的寵物項目中有一個角色、背景和相機。我想讓背景跟隨相機,我做到了。但是背景移動得非常順利。我有兩個腳本:用於相機和背景。

public class CameraFollowScript : MonoBehaviour
{
[SerializeField]
public Transform player;
[SerializeField]
private float rightLimit;
[SerializeField]
private float leftLimit;
[SerializeField]
private float bottomLimit;
[SerializeField]
private float topLimit;

void FixedUpdate()
{
    if (player)
    {
        var targetPos = new Vector3(player.position.x, player.position.y, transform.position.z);

        Vector3 pos = Vector3.Lerp(transform.position, targetPos, 1f);
        transform.position = targetPos;
    }
    
    transform.position = new Vector3(
        Mathf.Clamp(transform.position.x, leftLimit, rightLimit),
        Mathf.Clamp(transform.position.y, bottomLimit, topLimit),
        transform.position.z);
}

private void OnDrawGizmos()
{
    Gizmos.color = Color.red;
    Gizmos.DrawLine(new Vector2(leftLimit, topLimit), new Vector2(rightLimit, topLimit));
    Gizmos.DrawLine(new Vector2(leftLimit, bottomLimit), new Vector2(rightLimit, bottomLimit));
    Gizmos.DrawLine(new Vector2(leftLimit, topLimit), new Vector2(leftLimit, bottomLimit));
    Gizmos.DrawLine(new Vector2(rightLimit, topLimit), new Vector2(rightLimit, bottomLimit));
}
}

和背景

public class BackGroundScript : MonoBehaviour
{
[SerializeField] public Transform player;

void FixedUpdate()
{
    if (player)
    {
        var targetPos = new Vector3(player.position.x, transform.position.y, transform.position.z);

        Vector3 pos = Vector3.Lerp(transform.position, targetPos, 1f);
        transform.position = pos;
    }
}
}

我有一個關於我的問題的小 gif。點擊

它的 fps 很差,但我沒有任何變體。

你可以看到背景在從相機延遲移動,因此,當相機停止時,它會抽搐

我嘗試刪除 Lerp,但沒有幫助

尤里·努德曼

首先,將 1f 的常量值分配為 lerp 最後一個參數是沒有用的。這個:

Vector3 pos = Vector3.Lerp(transform.position, targetPos, 1f);

等於:

Vector3 pos = targetPos

但這不是問題。問題是您使用了 FixedUpdate,它應該用於進行物理操作(計算力等)。它與幀速率不同步。因此,您會看到這種抖動。對於移動背景,您不需要物理。只需在與幀速率同步的 Update 中編寫您的代碼。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

為什麼我的隨機數在 Excel 中沒有相應改變?

為什麼我的代碼不生成沒有 str 的隨機數?

為什麼在 WebGl 構建中腳本化的精靈移動和旋轉變慢?

為什麼 prinf 打印隨機數?

信號量延遲比預期更快 - 為什麼?

python隨機數為什麼在所有計算機上都不一樣

如何在 Xamarin Forms 中以秒為單位延遲隨機圖像並顯示為 XAML?

為什麼不使用 JavaScript 添加 loading="lazy" 來實際延遲加載圖像?

為什麼隨機發生器的作用就像一個“生成器”

為什麼我的用於生成隨機數的種子不起作用?

為什麼我的運動系統會隨機中斷?

為什麼在這個隨機引號生成器中沒有定義 const 變量 localQuotes?

為什麼 xorshift 隨機數生成器在所有示例中都使用相同“數量”的 SBR/SBL?

為什麼我需要為 Java 中的隨機數猜測器的 int 分配 -1

儘管將畫布精確地貼合到屏幕上,但為什麼仍有滾動條

為什麼伴隨對像不作為 JUnit 測試的私有字段進行測試?

為什麼隨機梯度下降會導致我們達到最小值?

為什麼我在 JavaScript 中生成的隨機二進制數據高度可壓縮?

為什麼去相關查詢沒有產生預期的結果?

為什麼坐標沒有將它們相對放置?

相機跟隨物體,旋轉除了 z 軸

我究竟做錯了什麼?我製作了一個爆炸我的水泥塊精靈的動畫,它可以工作,但問題是動畫沒有通過

如何讓敵人在pygame中以小延遲隨機射擊子彈

Route 精確道具和 NavLink 精確道具有什麼區別?

SELECT 後跟 SQL 命令作為字符串是什麼意思

對於鼠標單擊光線投射一條線,為什麼在我移動相機後我的起始光線沒有更新到我的相機位置?

為什麼 Arraylist<String> 作為長且隨機的字符串存儲在 H2 數據庫中?

為什麼 getRefCount 沒有增加?

為什麼它不是每 300 毫秒從列表中發送和移動每個隨機無人機?