【Unity自制手册】Unity—Camera相机跟随的方法大全

news/发布时间2024/5/15 11:11:09

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity基础实战

🅰️



文章目录

    • 🅰️
    • 前言
    • 🎶(==1==) 挂载于父对象上进行跟随
    • 🎶(==2==)位置定点跟随,滑轮改变视野
    • 🎶(==3==) 距离差值进行跟随
    • 🎶(==4==) LookAt上帝视角的跟随
    • 🎶(==5==)相机的第一/三人称跟随(添加了跟随点)
    • 🎶(==6==)相机 Lerp差值跟随
    • 🅰️


前言


🎶(1 挂载于父对象上进行跟随



🎶(2位置定点跟随,滑轮改变视野


😶‍🌫️效果:
摄像机需要实现跟随,车同步移动,旋转。并且滑动鼠标滑轮可以调节与车辆之间的摄影距离。

在这里插入图片描述


public class CameraFllow : MonoBehaviour
{//目标物体public Transform target;//鼠标滑轮的速度public float ScrollSpeed = 4f;//Y轴差距参数public float Ydictance = 0f; public float  Ymin = 0f;public float  Ymax  = 4f;//Z轴差距参数public float Zdictance = 4f;public float Zmin = 4f;public float Zmax = 8f;//相机看向的角度 和最終位置public float angle = -25 ;public Vector3 lookPosition;void LateUpdate(){//Z轴和Y轴的距离和鼠标滑轮联系Ydictance += Input.GetAxis("Mouse ScrollWheel") * ScrollSpeed;Zdictance += Input.GetAxis("Mouse ScrollWheel") * ScrollSpeed;//設置Y軸和x轴的滚轮滑动范围Ydictance = Mathf.Clamp(Ydictance , Ymin ,Ymax );Zdictance = Mathf.Clamp(Zdictance , Zmin, Zmax );//确定好角度,四元数 * 三维向量 = 三维向量lookPosition = Quaternion.AngleAxis(angle, target .right) * -target.forward ;//更新位置transform.position = target.position + Vector3.up * Ydictance - lookPosition  * Zdictance  ;//更新角度transform.rotation = Quaternion.LookRotation(lookPosition);}
}

🎶(3 距离差值进行跟随


在这里插入图片描述

public class CameraMove : MonoBehaviour
{public Transform target; //跟随的目标物体private Vector3 offset;  //位置偏移差void Start(){offset = transform.localPosition - target.transform.localPosition;}private void FixedUpdate(){if (target){transform.rotation = target.rotation ;transform.rotation *= Quaternion.AngleAxis(-15, Vector3.left);transform.position = target.transform.localPosition + offset;}}}

🎶(4 LookAt上帝视角的跟随


在这里插入图片描述

public class CameraMove : MonoBehaviour
{public Transform target; //跟随的目标物体private Vector3 offset;  //位置偏移差void Start(){offset = transform.localPosition - target.transform.localPosition;}private void FixedUpdate(){if (target){           transform.rotation = target.rotation ;           transform.position = target.transform.localPosition + offset;transform.LookAt(target.position +Vector3 .up*3);}}}

🎶(5相机的第一/三人称跟随(添加了跟随点)


  • 为了实现相机和人物的镜头旋转保持一致,(达到相机作为子对象的效果)
  • 所以只需要再父对象中添加一个跟随点作为其子对象
    在这里插入图片描述
    在这里插入图片描述
public class CameraMove : MonoBehaviour
{public Transform target; //跟随的目标物体private Vector3 offset;  //位置偏移差void Start(){offset = transform.position - target.GetChild(0).position;//target的第一个子对象是相机的跟随点}private void FixedUpdate(){if (target){           transform.rotation = target.GetChild(0).rotation ;           transform.position = target.GetChild(0).position+ offset;transform.LookAt(target.position + Vector3 .up*2.5f);///transform.rotation = target.rotation;}}}

🎶(6相机 Lerp差值跟随


在这里插入图片描述

     transform.position = Vector3.Lerp(transform.position, target[ChooseIndex].position, Time.deltaTime * speed);transform.LookAt(targetOb );

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/RvrI/3621.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

springboot网站开发02-接入持久层框架mybatisPlus

springboot网站开发02-接入持久层框架mybatisPlus!经过上一小节内容分享,我们的项目嵌套模式框架搭建好了,下面就是开始编辑具体的业务代码了,我们使用到了持久层框架是mybatisPlus插件。下面是一些具体的植入框架的操作步骤。 第…

nginx-------- 高性能的 Web服务端 (三) 验证模块 页面配置

一、http设置 1.1 验证模块 需要输入用户名和密码 htpasswd 此命令来自于 httpd-tools 包,如果没有安装 安装一下即可 也可以安装httpd 直接yum install httpd -y 也一样 第一次生成文件htpasswd -c 文件路径 姓名 交互式生成密码 htpasswd -bc 文…

【经验分享】分类算法与聚类算法有什么区别?白话讲解

经常有人会提到这个问题,从我个人的观点和经验来说2者最明显的特征是:分类是有具体分类的数量,而聚类是没有固定的分类数量。 你可以想象一下,分类算法就像是给你一堆水果,然后告诉你苹果、香蕉、橙子分别应该放在哪里…

高并发Server的基石:reactor反应堆模式

业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上,服务端server接收到IO请求后,是如何处理请求并最终进入业务流程的呢?这里不得不提到reactor反应堆模型。nginx tomcat redis nodejs dubbo等软件的网络处理模型都…

线阵相机参数介绍之轴编码器控制

1.1 功能介绍 编码器是将检测对象的运动与相机拍摄取图相匹配的设备,也即检测对象运动一定距离,相机就拍摄一定行高的图像。 编码器会将检测对象的实际位移转换为固定数量电信号。例如:编码器的精度是2000p/r,该参数的含义是编码器每转一圈输…

【Azure 架构师学习笔记】- Azure Databricks (10) -- UC 使用

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (9) – UC权限 在前面的文章:【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog中演示了如何配置一个UC。 本文…

js 文件预览 在窗口设置“自定义名称”

1. 最近需要做一个点击表格某一列的标题,预览当前文件的一个小功能。本身功能很简单,点击该标题,预览文件,那么拿到他对应的文件地址,在浏览器打开就行了。 2. 事实如此,使用window.open(url, _blank);就行…

从MATLAB到MWORKS,科学计算与系统建模仿真平台的中国选项

“中国需要自主的科学计算与系统建模仿真平台。” 工业软件是所有复杂系统研发设计、仿真验证和数字制造的必备工具,已经成为衡量一个国家工业竞争力的核心指标。在传统工业软件领域,我们一直处于落后状态,尤其是研发设计类工业软件&#xff…

【MATLAB】CEEMD_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 CEEMD_MFE_SVM_LSTM神经网络时序预测算法是一种结合了多种先进技术的复杂预测方法,旨在提高时序预测的准确性和稳定性。下面是对该算法的详细介绍: CEEMD&#xff…

紫光同创初使用

芯片PGC2KG-6LPG144 1、安装好软件接,加载license,有两个,与电脑MAC地址绑定的 2、正常使用后,新建个工程,配置管脚Tools→UCE 3、程序中有些信号被软件认为是时钟信号,会报错(时钟输入I0约束在非专用时钟…

js之事件代理/事件委托

事件代理也叫事件委托,原理:利用DOM元素的事件冒泡,指定一个事件的处理程序就可以管理某一类型的所有事件。 事件冒泡和事件捕获 如上图所示,事件传播分成三个阶段: 捕获阶段:从window对象传导到目标节点&…

2024.2.18 C++QT 作业

思维导图 练习题 1>定义一个基类 Animal&#xff0c;其中有一个虛函数perform&#xff08;)&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std;class Animal { public:virtual void perform() {cout << "这是一个动…

网络渗透测试:Wireshark抓取qq图片

Wireshark Wireshark Downloadhttps://www.wireshark.org/download.html 简介 WireShark是非常流行的网络封包分析工具&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括&#xff1a; 1、Wireshar…

国家建筑装配式内装产业基地在沪成立,副主任单位优积科技协同助推绿色低碳循环发展

上海市室内装饰行业协会装配式内装产业专业委员会成立大会暨“国家建筑装配式内装产业基地”项目启动会于3月21日下午1点在上海光大酒店隆重举行。出席此次活动的包括市装协会长徐国俭&#xff0c;市装协党支部书记兼秘书长丛国梁&#xff0c;市装协装配式内装委主任顾泰昌&…

Android 广播的基本概念

一.广播简介 Broadcast是安卓四大组件之一。安卓为了方便进行系统级别的消息通知&#xff0c;引入了一套广播消息机制。打个比方&#xff0c;记得原来在上课的时候&#xff0c;每个班级的教室里都会装有一个喇叭&#xff0c;这些喇叭都是接入到学校的广播室的&#xff0c;一旦…

Spring Boot整合 Cache 以Redis服务 处理数据缓存

目录 一、SpringBoot框架 二、什么是cache 三、redis介绍 四、高速缓存 一、SpringBoot框架 Spring Boot是一个基于Java的开源框架&#xff0c;用于快速构建独立的、可运行的、生产级的Spring应用程序。它简化了Spring应用程序的配置和部署过程&#xff0c;并提供了许多开…

echarts series中的data属性添加动态数据后不显示问题,一处儿异步细节问题

当从后端获取到数据后&#xff0c;发现饼图并没有顺利加载数据出来&#xff0c;使用console.log()测试先后执行顺序&#xff0c;会发现饼图的方法会比请求先执行 此时就可以把饼图的方法放入到请求执行结束后 以下为修改前&#xff1a; 修改后&#xff1a; 一处儿异步的细节问…

java——IO流基础

目录 IO流IO流的四大分类&#xff1a;IO流的体系&#xff1a;FileinputStream&#xff08;文件字节输入流&#xff09;FileOutputStream(文件字节输出流&#xff09;文件复制资源释放FileReader&#xff08;文件字符输入流&#xff09;FileWriter(文件字符输出流&#xff09;缓…

Rust之构建命令行程序(四):用TDD(测试-驱动-开发)模式来开发库的功能

开发环境 Windows 11Rust 1.75.0 VS Code 1.86.2 项目工程 这次创建了新的工程minigrep. 用测试-驱动模式来开发库的功能 既然我们已经将逻辑提取到src/lib.rs中&#xff0c;并将参数收集和错误处理留在src/main.rs中&#xff0c;那么为代码的核心功能编写测试就容易多了。我…

微服务篇之分布式系统理论

一、CAP定理 1.什么是CAP 1998年&#xff0c;加州大学的计算机科学家 Eric Brewer 提出&#xff0c;分布式系统有三个指标&#xff1a; 1. Consistency&#xff08;一致性&#xff09;。 2. Availability&#xff08;可用性&#xff09;。 3. Partition tolerance &#xff0…
推荐文章