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官方有Third Person Starter Asset可供研究,其官方商店页面是:Starter Assets - ThirdPerson | Updates in new CharacterController package 官方B站介绍视频是:Bilibili - [Unity教程]-Starter Asset

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

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

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

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

    2024年02月06日
    浏览(81)
  • 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日
    浏览(53)
  • Unity【角色/摄像机移动控制】【3.摄像机跟随角色】

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

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

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

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

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

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

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

    2024年02月21日
    浏览(54)
  • unity Camera(摄像机)介绍

    目录 一.摄像机类型 1.Perspective (透视摄像机) 2.Orthographic(正交摄像机) 二.摄像机属性 1.Clear Flags 2.Background 背景色 3.Culling Mask 剔除遮罩 4.Projection 投影 5.Field Of View   视野范围 6.Size 大小 7.Clipping Planes 裁剪屏幕 8.Viewport Rect 标准视图矩形 9.Depth 深度 10.Rendering Path 渲染路径

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

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

    2024年02月11日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包