当前位置:   article > 正文

【unity笔记】相机跟随人物---镜头跟着人跑_unity2d相机跟随人物

unity2d相机跟随人物

Unity 2D平滑相机跟随是一种让相机能够跟随玩家移动的方式,使得游戏场景可以随着玩家的移动而有所变化,从而提高游戏的流畅度和玩家体验。在本文中,我们将介绍Unity 2D平滑相机跟随的实现方法。

在这里插入图片描述

第一步,创建相机

首先,在Unity中创建一个相机对象。创建相机的方法很简单:在Hierarchy视图中右键点击空白处,选择“Camera”。

第二步,设置相机参数

接下来,我们需要设置相机的参数。在Inspector视图中,找到相机组件并展开它。我们需要设置的参数有:

  1. Projection:选择正交投影或透视投影。一般来说,2D游戏都使用正交投影。

  2. Size:设置相机的大小,以适应游戏场景中的元素。

  3. Depth:控制相机的渲染顺序,一般不需要修改。

  4. Clear Flags:选择相机的背景清除方式,可以选择为纯色、天空盒或不清除。

  5. Background:如果选择纯色,需要设置背景颜色。

第三步,编写脚本

接下来,我们需要编写一个脚本,让相机能够跟随玩家的移动。在Unity中,可以使用C#或JavaScript编写脚本。这里我们使用C#。

首先,定义一个变量来存储玩家对象:

public Transform target;
  • 1

然后,定义一个变量来控制相机的跟随速度:

public float smoothSpeed = 0.125f;
  • 1

接下来,使用Vector3的Lerp方法,使相机平滑跟随玩家移动

 			// 计算目标位置在屏幕上的坐标
            Vector3 targetPosition = Camera.main.WorldToViewportPoint(target.position);
            // 计算摄像机应该移动的向量
            Vector3 delta = target.position - Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, targetPosition.z));
            // 计算摄像机的目标位置
            Vector3 destination = transform.position + delta;
            // 使用平滑阻尼移动摄像机
            transform.position = Vector3.Lerp(transform.position, destination, smoothSpeed * Time.deltaTime);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

我们将玩家的位置保存在一个Vector3对象destination中,然后使用Lerp方法,将相机当前的位置(transform.position)平滑地移向玩家的位置(destination),然后将相机的位置设置为这个新位置。

第四步,将脚本应用到相机对象上

最后,将编写好的脚本应用到相机对象上。在Inspector视图中,将脚本拖拽到相机对象的Add Component的区域即可。还要指定好跟踪的对象(Target)。
在这里插入图片描述

至此,我们已经完成了Unity 2D平滑相机跟随的实现。在游戏运行时,相机将能够平滑地跟随玩家的移动,从而让游戏更加流畅。

using UnityEngine;

public class follow_camera: MonoBehaviour
{
    public Transform target; // 跟随的玩家对象
    public float smoothSpeed = 0.125f; // 跟随的平滑程度

    private void LateUpdate()
    {
        if (target != null)
        {
            // 计算目标位置在屏幕上的坐标
            Vector3 targetPosition = Camera.main.WorldToViewportPoint(target.position);
            // 计算摄像机应该移动的向量
            Vector3 delta = target.position - Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, targetPosition.z));//表示屏幕中心点在视口坐标系中的位置,其中z轴坐标等于目标位置在世界坐标系中的z轴坐标,保证在同一平面上,即摄像机与目标在同一水平线上。要想调镜头就在0.5f上下手。
            // 计算摄像机的目标位置
            Vector3 destination = transform.position + delta;
            // 使用平滑阻尼移动摄像机
            transform.position = Vector3.Lerp(transform.position, destination, smoothSpeed * Time.deltaTime);
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

LateUpdate()在update()之后执行。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/122951?site
推荐阅读
相关标签
  

闽ICP备14008679号