簡體   English   中英

Unity:僅當角色到達 Y 軸上的某個點時才使用相機跟蹤玩家的移動?

[英]Unity: Track player movement with camera only when character reaches a certain point on the Y axis?

我目前正在使用 Unity 開發 2D 平台游戲。 當玩家跳躍時,我會阻止相機跟隨他們,以便讓玩家看到他們下方的東西。 但是,我實現了一個機制,允許玩家在抓住敵人時執行二段跳,這種二段跳使玩家跳過屏幕邊界。 我想知道我將如何讓相機僅在玩家退出某些邊界時平滑地跟隨玩家。 我編寫了基本的代碼,以一種斷斷續續的方式做到這一點。 我將包含 gif 來展示我的游戲當前的行為方式,以及我希望它如何表現的示例。

這是我在相機 controller 中編寫的代碼:

  transform.position = new Vector3(player.position.x, 50, -100);

    if (player.position.y > 50)
    {

        transform.position = player.position - transform.forward * camDist + Vector3.up * playerHeight;

    }

下面是我的代碼現在所做的嵌入 imgur gif:

 <blockquote class="imgur-embed-pub" lang="en" data-id="a/houedOV" data-context="false" ><a href="//imgur.com/a/houedOV"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>

下面是我要實現的目標的示例:

 <blockquote class="imgur-embed-pub" lang="en" data-id="a/deg5yeq"><a href="//imgur.com/a/deg5yeq"></a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>

您應該將相機從原點移動到目的地,而不是立即將相機設置到目的地(調用 1 幀或 1 次更新)

嘗試使用此代碼設置相機 position

void Update(){

   // ...  
   Vector2 destination = Vector2.zero; // your camera destination you expected
   float maxMoveDistance = 1; // maximum distance to move camera in each frame
   camera.transform.position = Vector2.MoveTowards(camera.transform.position, destination, maxMoveDistance); // move camera to destination
        
}

好的,我想出了我自己問題的答案!

就這么簡單:

 void Update()
{
   

    if (player.position.y > 50)
    {

        
        transform.position = new Vector3(player.position.x, player.position.y, -100);
    }

    else
    {
        transform.position = new Vector3(player.position.x, 50, -100);

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM