【问题标题】:Unity: Track player movement with camera only when character reaches a certain point on the Y axis?Unity:仅当角色到达 Y 轴上的某个点时才使用相机跟踪玩家的移动?
【发布时间】:2020-11-19 17:40:57
【问题描述】:

我目前正在使用 Unity 开发一款 2D 平台游戏。当玩家跳跃时,我会阻止相机跟随他们,以便让玩家看到他们下方的东西。但是,我实现了一个机制,允许玩家在抓住敌人时执行二段跳,而二段跳使玩家跳过屏幕边界。我想知道如何让相机只有在玩家离开某些边界时才能平滑地跟随玩家。我编写了基本的代码,以一种断断续续的方式做到这一点。我将添加 gif 来展示我的游戏当前的行为方式,以及我希望它如何行为的示例。

这是我在相机控制器中编写的代码:

  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>

【问题讨论】:

  • 您好,我看到您正在使用unityscript 标签,请注意这是(如标签信息中所述)Unity 制作的不推荐使用的脚本语言,并且不是一个涵盖 Unity 中所有脚本的术语。你的问题是关于 C# 的。如果您使用实际语言 UnityScript 处理遗留代码,请仅使用此标记。这使问题和标签保持一致:)

标签: c# unity3d game-development


【解决方案1】:

您应该将相机从原点移动到目的地,而不是立即将相机设置到目的地(调用 1 帧或 1 次更新)

尝试使用此代码设置相机位置

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
        
}

【讨论】:

    【解决方案2】:

    好的,我找到了自己问题的答案!

    就这么简单:

     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);
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多