Unity如何实现第三人称相机跟随

这篇具有很好参考价值的文章主要介绍了Unity如何实现第三人称相机跟随。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

效果

我们需要实现简易的,泛用性高的第三人称相机跟随,通过鼠标滚轮可以控制与对象物体的远近距离,按住鼠标右键拖动鼠标可以控制相机视角跟随物体旋转,并且相机始终朝向游戏对象。

实现步骤

1.在层级区域把主相机拖入玩家物体作为玩家的子层级,并且调整好适当的距离。

2.因为后期会用到标签查找,所以需要在右上角Inspector区域把玩家的标签设置为“Player”。

3.创建脚本,脚本名称为“CameraFollow”,创建完后挂载到相机上。(脚本名称也可以自拟,但是复制时要注意名字,Unity中的代码文件名和代码中的命名空间一定要一致文章来源地址https://www.toymoban.com/news/detail-504262.html

编辑脚本(逻辑和参数含义已注释):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFollow : MonoBehaviour {

    private Transform player;//玩家位置
    private Vector3 offsetPosition; //位置偏移
    private bool mouse1Down;//是否按下鼠标右键

    public float distance;
    public float scrollSpeed = 10;//视野远近变化的速度
    public float RotateSpeed = 2;//相机镜头转向的速度

    void Start()
    {    
        player = GameObject.FindGameObjectWithTag("Player").transform;//查找对象
        transform.LookAt(player.position);//相机指向player
        offsetPosition = transform.position - player.position;//计算位置偏移量
    }

    void Update()
    {
        transform.position = offsetPosition + player.position;//更新相机位置
        Rotate();
        Scroll();
    }

    void Scroll()//鼠标滑轮拉近拉远视野
    {       
        distance = offsetPosition.magnitude;//把偏移向量的模长赋值
        distance -= Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;
        distance = Mathf.Clamp(distance, 2, 20);//限制镜头缩放最远以及最近距离
        offsetPosition = offsetPosition.normalized * distance;//更新偏移向量      
    }

    void Rotate()//按下鼠标右键后移动鼠标更新视角
    {
        if (Input.GetMouseButtonDown(1))//按下鼠标右键
        {
            mouse1Down = true;
        }
        if (Input.GetMouseButtonUp(1))//弹起鼠标右键
        {
            mouse1Down = false;
        }
        if (mouse1Down)//设置鼠标左右移动后相机的位置变化
        {
            transform.RotateAround(player.position, player.up, RotateSpeed * Input.GetAxis("Mouse X"));//设置水平环绕旋转

            Vector3 originalPos = transform.position;
            Quaternion originalRotation = transform.rotation;
            transform.RotateAround(player.position, transform.right, -RotateSpeed * Input.GetAxis("Mouse Y"));//设置竖直环绕旋转
            //垂直和水平都会影响两个值

            float x = transform.eulerAngles.x;

            if (x < 10 || x > 80)//限制最大、最小俯仰角度
            {
                transform.position = originalPos;
                transform.rotation = originalRotation;
            }
        }
        offsetPosition = transform.position - player.position;
    }
}

到了这里,关于Unity如何实现第三人称相机跟随的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • unity3d 实现第三人称移动与摄像机调整

    首先展示效果 unity3d 关于人物移动,这里推荐使用Character Conrroller组件,优点就是可以不用处理刚体,不受重力的影响,自带物理碰撞检测。  人物移动代码包括转向 接下来就是摄影机的调整,这里使用unity自带的插件cinemachine,非常的推荐,无需使用冗杂的代码即可设计较好

    2024年02月11日
    浏览(50)
  • Unity移动端第三人称控制器

    在Hierarchy面板空白地方右键-3D Object创建一个Plane和一个Capsule 鼠标单击选中Capsule 在右侧Inspector面板删除Capsule Collider碰撞体组件 添加一个Character Controller(角色控制器,自带一个碰撞体)和一个脚本ThirdPersonController(名字可以自己取) 在 ThirdPersonController 中定义变量: 在 Start 中初始

    2024年02月02日
    浏览(55)
  • 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解决: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)
  • ue4第三人称第一人称切换。

    1.默认第三人称。将远点的相机设置auto active为true。近点相机设置为false。   在做好的actor中设置camera的active,和人物是否隐藏。    通过v键来切换第一人称和第二人称。

    2024年02月12日
    浏览(55)
  • UE4第三人称多人联机游戏开发01

    单人游戏 中一台电脑只有一个游戏会话(Session),我们可以通过在同一电脑中分屏并用不同的输入设备,单人游戏不需要使用互联网。 多人游戏 中,游戏实例在独立的两台电脑中运行,而由于玩家在不断地输入指令,因此我们需要将一个游戏实例中的信息通过互联网传输到

    2024年02月07日
    浏览(90)
  • VR工地安全虚拟现实体验:多种事故模拟,第三人称回看

    建筑工地五大伤害是指:高处坠落、坍塌、物体打击、机械伤害、触电。利用VR(虚拟现实)技术体验建筑工地五大伤害,可以为建筑工人提供更真实、更安全的工作环境,同时也可以帮助他们更好地了解和掌握工作技能。 以下是 VR工地安全虚拟现实体验软件 的价值: 首先,通

    2024年02月12日
    浏览(49)
  • 【Unity】实现相机跟随及视角转动

    【unity】实现相机跟随,人物移动请参照【Unity】 实现角色移动、视角旋转以及跳跃 1.创建一个 Camera ,将 Camera 置于物体 Player 下 随意拖动 Camera 到合适的位置 具体参数【仅供参考】 运行效果如下 1.创建两个空物体 CameraHandle 和 Pivot ,将相机拖动到Pivot下,具体如图所示 其中

    2023年04月27日
    浏览(49)
  • unity--相机跟随与屏幕自适应的实现

    如何让相机跟着人物跑呢?这是个不太大但是需要解决的问题。 思路就是用LateUpade(保证在所有更新函数都调用完调用)实时监测相机的位置,让他一直和游戏主角保持一定的距离。 开始执行: 创建个脚本给相机绑上 然后我们开始写里面的代码。 写代码 把参数设置下 完成

    2024年02月15日
    浏览(46)
  • unity相机跟随和相机边界(Cinemachine)

    1.在 Unity 编辑器中打开 Package Manager(菜单:Window Package Manager) 2.找到 Cinemachine 条目,然后单击右下角的 Install。 1.要开始使用 Cinemachine,你需要在顶部菜单栏上选择 Cinemachine Create 2D Camera 条目,从而将 Cinemachine 2D 摄像机添加到场景中。 2.此时将创建一个名为 CM vcam1 的新游戏

    2024年02月11日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包