【发布时间】:2017-06-01 17:48:26
【问题描述】:
我正在制作一个游戏,其中玩家控制两个不同的角色(每个角色都有自己的空对象,并带有一个摄像头作为孩子),并通过按下控制键切换一个或另一个。问题是,我试图通过使用另一台摄像机在两个角色摄像机之间进行一点过渡,所以它不仅在一个和另一个之间传送,而且我似乎做不到。我尝试了 lerp 但我不知道我是否正确,所以我阅读并尝试了 Vector3.MoveTowards 但仍然无法做到。到目前为止,这是我的代码(这是因为我最后一刻脑残):
public class CameraController : MonoBehaviour
{
public Camera cam1;
public Camera cam2;
public Camera movingCamera;
public bool isCurrentPlayer;
public Transform target1;
public Transform target2;
public float speed = 0.2f;
void FixedUpdate()
{
float step = speed * Time.deltaTime;
if (Input.GetButtonDown("Control"))
{
if (isCurrentPlayer)
{
movingCamera.enabled = true;
cam2.enabled = false;
while (transform.position != target1.position)
{
transform.position = Vector3.MoveTowards(transform.position, target1.position, step);
}
if (transform.position == target1.transform.position)
{
movingCamera.enabled = false;
cam1.enabled = true;
}
isCurrentPlayer = false;
}
else if (!isCurrentPlayer)
{
movingCamera.enabled = true;
cam1.enabled = false;
while (transform.position != target2.position)
{
transform.position = Vector3.MoveTowards(transform.position, target2.position, step);
}
if (transform.position == target2.transform.position)
{
movingCamera.enabled = false;
cam2.enabled = true;
}
isCurrentPlayer = true;
}
}
}
【问题讨论】:
-
为角色添加空游戏对象以进行相机对接。使用一个摄像机并在更改角色时将摄像机移动到另一个停靠对象并将其指定为子对象。所以你可以控制你的相机移动速度,或者甚至可以添加某种路径让相机以奇特的方式从一个角色飞到另一个角色。
-
您的
CameraController脚本附加到什么位置?
标签: c# unity3d camera smoothing