# 前言
在游戏场景中,经常需要平移摄像机然后聚焦对象,今天就来讲讲这部分是如何实现。
# 正文
# 思路
我们可以让摄像机从屏幕中心点发射一个射线到场景平面(Plane)中,得到当前屏幕中心点在场景中的位置,然后对于目标点的差值就是我们需要移动摄像机的距离。
# 代码实现
//聚焦对象
private void CameraFocusAt(Transform target)
{
var cp = CalcScreenCenterPosOnPanel();
var tp = target.position;
//1.直接移动
// mainCamera.transform.Translate(tp - cp,Space.World);
//2.使用tween移动
mainCamera.transform.DOMove(mainCamera.transform.position + (tp - cp), 0.5f);
}
/// <summary>
/// 屏幕中心点到panel上的坐标
/// </summary>
/// <returns></returns>
private Vector3 CalcScreenCenterPosOnPanel()
{
var ray = mainCamera.ScreenPointToRay(new Vector3((float) Screen.width / 2, (float)Screen.height / 2, 0));
if (_plane.Raycast(ray, out var distance))
{
return ray.GetPoint(distance);
}
else
{
return

本文介绍了如何在Unity游戏中实现摄像机平移并聚焦到指定对象。通过计算屏幕中心点在场景中的位置,获取目标点与屏幕中心点的差值,调整摄像机位置,可以平滑地将焦点移动到目标对象。代码示例中提供了两种移动方式:直接移动和使用tween动画移动。示例代码可在GitHub上查看。
最低0.47元/天 解锁文章
5102

被折叠的 条评论
为什么被折叠?



