2016-11-29 61 views
0

我正在制作一个45度摄像头角度的自顶向下射击游戏。在我的场景中,我将相机与玩家拼接起来跟随玩家。我曾在几场比赛中看到过,比如"Secret Ponchos",相机稍微漂浮在玩家瞄准的方向。这是微妙的,但增加了抛光。Unity 3D C#摄像头 - 在鼠标或操纵杆方向移动/移动摄像头

我尝试了几种不同的方法,但不知道如何获得Lerp的矢量。 有没有一种方法可以基于mouseMovement进行微调?如果是这样如何?

+1

欢迎使用stackoverflow。我想你应该检查在这里提问的最佳方式。所以这对你和每个人来说都会更轻松。你需要帮助我们来帮助你,提供更多细节。例如:你的相机脚本。 –

+0

嘿,对不起。这是所有cameraScript会这样做的,因此现在没有相机脚本。我想这只需要几行就可以找到正确的矢量lerp? – rajul614

+0

您可以尝试隐形团结项目中的摄影机脚本。我之前使用它们,我认为它按照你想要的方式工作。看一看。 http://answers.unity3d.com/questions/691973/stealth-project-tutorial-camera-movement.html –

回答

1

要获得用于相机控制的Lerp的位置,您只需要弄清楚相机推动的方向并将其添加到玩家的位置。

一种选择是使用transform.forward来使用玩家面对的方向,但这需要您旋转玩家角色。

//Assign the player's transform here 
public Transform Target; 

Vector3 GetNudgeDirection() { 
    return Target.forward; 
} 

另一种方法是获得鼠标相对于玩家的方向。

public Transform Target; 

Vector3 GetNudgeDirection() { 
    //Get the position of the mouse 
    Vector3 mousePos = Input.mousePosition; 
    mousePos.z = -Camera.main.transform.position.z; 
    Vector2 inputPos = Camera.main.ScreenToWorldPoint(mousePos); 
    //returns direction from the player to the mouse pos. 
    return (inputPos - (Vector2)Target.position).normalized; 
} 

然后,您会将微调方向添加到目标的位置,以获取您的相机应瞄准的位置。

//This field determines how far to nudge 
private float nudgeDistance = 2f; 

Vector3 GetTargetPosition() { 
    return Target.position + (GetNudgeDirection() * nudgeDistance); 
} 

请记住,目标位置是您的相机应该看的地方,而不是它应该移动到的位置!所以当你真的在移动你的相机时,向目标位置添加一个偏移量,以保持它的距离。