统一:只有当角色到达Y轴上的某个点时,才用相机跟踪玩家的移动



我目前正在使用Unity开发一款2D平台游戏。当玩家跳跃时,我会阻止摄像机跟随他们,以便让玩家看到他们下面的东西。然而,我实现了一个机制,允许玩家在抓住敌人时进行双跳,这种双跳使玩家跳过屏幕的边界。我在想,只有当球员离开特定的边界时,我才能让摄像机流畅地跟随他们。我编写了一些基本的代码,这些代码以一种不稳定的方式完成了这项工作。我会附上一些礼物来展示我的游戏目前的表现,并举例说明我希望它如何表现。

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

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次更新(

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

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

最新更新