unity-第三人称摄像机简单脚本(包括跟随、视角旋转、滚轮缩放)

这篇具有很好参考价值的文章主要介绍了unity-第三人称摄像机简单脚本(包括跟随、视角旋转、滚轮缩放)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本菜鸟为了实现第三人称视角摄像机的主要功能,踩了很多意料之外的坑,终于搞出一份自觉完美的脚本,分享一下。

功能:摄像机跟随、鼠标滚轮缩放视野、长按鼠标右键左右旋转视野、长按鼠标中键上下旋转视野。

此脚本挂接在摄像机上,有详细注释,可直接运行。文章来源地址https://www.toymoban.com/news/detail-718931.html

    public GameObject target;//目标物体
    Vector3 offset;//相机跟随的偏移量
    void Start()
    {
        //保证摄像机看向目标物体,且z轴旋转度是0
        transform.LookAt(target.transform.position);
        transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, 0);
        //得到摄像机与物体之间的初始偏移量
        offset = target.transform.position - transform.position;
    }

    void LateUpdate()
    {
        Rotate();
        Rollup();
        Follow();
    }

    //摄像机跟随、滚轮缩放功能:

    public float zoomSpeed = 1f; // 视野的缩放速度
    float zoom;//滚轮滚动量
    void Follow()
    {
        //视野缩放
        zoom = Input.GetAxis("Mouse ScrollWheel") * zoomSpeed; // 获取滚轮滚动量
        if (zoom != 0) // 如果有滚动
        {
            offset -= zoom * offset;
        }
        //镜头跟随
        transform.position = target.transform.position - offset;
    }

    //左右旋转、上下旋转功能:

    public float rotationSpeed = 500f;//摄像机旋转速度
    private bool isRotating, lookup = false;
    float mousex, mousey;
    void Rotate()
    {
        if (Input.GetMouseButtonDown(1))//长按鼠标右键
        {
            isRotating = true;
        }
        if (Input.GetMouseButtonUp(1))
        {
            isRotating = false;
        }
        if (isRotating)
        {
            //得到鼠标x方向移动距离
            mousex = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime;
            //旋转轴的位置是目标物体处,方向是世界坐标系的y轴
            transform.RotateAround(target.transform.position, Vector3.up, mousex);
            //每次旋转后更新偏移量
            offset = target.transform.position - transform.position;
        }
    }
    void Rollup()
    {
        if (Input.GetMouseButtonDown(2))//长按鼠标中键
        {
            lookup = true;
        }
        if (Input.GetMouseButtonUp(2))
        {
            lookup = false;
        }
        if (lookup)
        {
            //得到鼠标y方向移动距离
            mousey = Input.GetAxis("Mouse Y") * rotationSpeed * Time.deltaTime;
            //旋转轴的位置在目标物体处,方向是摄像机的x轴
            transform.RotateAround(target.transform.position, transform.right, mousey);
            //每次旋转后更新偏移量
            offset = target.transform.position - transform.position;
        }

    }

到了这里,关于unity-第三人称摄像机简单脚本(包括跟随、视角旋转、滚轮缩放)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Unity笔记:第三人称Starter Asset代码学习

    Unity笔记:第三人称Starter Asset代码学习

    自己看了几篇文章和视频,写了个人物移动脚本,有很多瑕疵。这个时候研究一下优秀的代码总是好的,Unity官方有Third Person Starter Asset可供研究,其官方商店页面是:Starter Assets - ThirdPerson | Updates in new CharacterController package 官方B站介绍视频是:Bilibili - [Unity教程]-Starter Asset

    2024年02月22日
    浏览(17)
  • Unity 第三人称 玩家控制器+相机控制器

    Unity 第三人称 玩家控制器+相机控制器

    今天给大家分享一个简单的Unity第三人称视角下玩家控制器和相机控制器的脚本编写方法。   效果如下: 主要分三部分实现:人物旋转、人物移动、相机旋转。 1.人物移动: 首先获取到人物水平和垂直移动的参数: 因为人物移动的方向跟摄像头一致,所以需要根据摄像头的

    2024年02月06日
    浏览(50)
  • Unity第三人称如何让人物始终朝向相机方向移动

    Unity第三人称如何让人物始终朝向相机方向移动

    不知道如何制作简易第三人称相机的同学可以看我的这篇文章:Unity如何实现第三人称相机跟随 我们在开发第三人称游戏过程中很容易遇到:我们的玩家角色,他面对北方,背后有一台摄像机,正巧也是面对北方。现在,他向右转90度,面对东方。此时如果让他向前走,那么

    2024年02月06日
    浏览(31)
  • Unity解决:3D开发模式第三人称视角 WASD控制角色移动旋转 使用InputSystem

    Unity解决:3D开发模式第三人称视角 WASD控制角色移动旋转 使用InputSystem

    Unity版本:2019.2.3f1 目录  安装InputSystem 1:创建InputHander.cs脚本 挂载到Player物体上 获取键盘输入WADS 2.创建PlayerLocomotion.cs挂载到Player物体上,控制物体移动转向   菜单栏/Window/Package Manager/Input System  工程面板内 右键--创建Input Actions  选中New Controls改名为PlayerControls 然后属

    2024年02月06日
    浏览(16)
  • 【Unity 摄像机组件】Camera场景摄像机的认识

    OK 同学们好,本节课我们开始学习摄像机创建以及摄像机的属性。 CH3.3 PPT02 摄像机相机是玩家用来观看游戏场景世界的基本设备,当游戏运行的时候,游戏画面就是摄像机看到的画面。 PPT 3一个场景中可以有无数个摄像机,最终游戏运行的画面可能是很多个摄像机拼凑而成。

    2024年02月02日
    浏览(21)
  • Unity【角色/摄像机移动控制】【3.摄像机跟随角色】

    本章代码基于前两章。 1. 我们新建CameraController脚本,将其挂载到Camera上 2. 在角色Player下新建一个空物体,命名为cameraTargetPoint,并将该物体挂载至CameraController脚本中【注意代码中的这行:public Transform cameraTargetPoint;】,将该空物体放在人物头部附近位置 3.将PlayerController脚本

    2024年02月22日
    浏览(22)
  • Unity 摄像机

    Unity 摄像机

    摄像机分为两种  (1)透视摄像机 (2) 正交摄像机  一般3D游戏使用的透视多一点,2D游戏使用正交多一点。 相机参数 清除标记: (1)天空盒 (2)仅深度,类似于权重,优先级,深度大的覆盖住深度小的视线 例如 主相机显示的却不是当先视线,而是新相机的视线 ,主

    2023年04月21日
    浏览(11)
  • Unity摄像机跟随

    将摄像机直接拖拽到被跟随的目标下面即可,这样摄像机永远在目标的后面 缺点: 屏幕旋转太平滑了 目标物体在屏幕上的位置永远不变 目标物体被销毁时总不能把摄像机也销毁了吧 先相机坐标和物体坐标做差,求得偏移量,在之后的每一帧里,将偏移量加上物体的坐标。

    2024年02月21日
    浏览(18)
  • unity摄像机平滑移动旋转

    Unity中使用Vector3.SmoothDamp(平滑阻尼)方法进行跟随移动,可以使跟随看起来很平滑,而不显得突兀,最典型的示例就是相机平滑跟随角色移动。 SmoothDamp (current : Vector3, target : Vector3, ref currentVelocity : Vector3, smoothTime )  

    2024年02月11日
    浏览(15)
  • unity摄像机跟随鼠标旋转

     float vertical = Input.GetAxis(\\\"Mouse X\\\") float horizontal = Input.GetAxis(\\\"Mouse Y\\\") 第二种 通过 计算坐标时只需要通过 Quaternion.Euler 来取得旋转四元数,以玩家为原点衍生一条(0,0,-1)的向量并乘上四元数以旋转至 Player 指向摄像机的方向,最后乘上 Distance ,即可得到摄像机相对玩家的偏移

    2024年02月11日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包