Unity中相机跟随人物移动
方法1:将相机拖到人物的游戏对象上,也就是让相机成为角色的子物体,这样相机就会跟随角色移动
但是这样会存在问题,1.相机会随着人物的翻转而翻转,2.相机跟随人物没有缓冲效果,移动比较僵硬
方法2:代码方式控制相机跟随人物移动
思路一:控制角色和相机的距离,使相机每一帧都和角色保持相等的距离,这样人物移动时,相机也就移动了(代码放在了控制人物的脚本中)不常用!!!仅作了解
public GameObject Camera;//镜头移动private Vector3 Distance;//玩家和摄影机的固定距离void Start()
{//这是在start中获取到初始时人物和相机的距离,之后要一直保持这个距离Distance = this.gameObject.transform.position - Camera.transform.position;
}
void Update()
{CameraMove();//镜头移动函数
}void CameraMove()//这里只列举了x轴
{float currentx;//相机的x坐标// Distance.x=this.gameObject.transform.position.x-currentx由这个公式推导出下面currentx = this.gameObject.transform.position.x - Distance.x;Vector3 temp = new Vector3(currentx, 0, -10);Camera.transform.position = temp;//改变相机的位置
}
改方法虽然能够使相机跟随,但是还是存在相机移动太僵硬,不够平滑的问题
思路二:利用Lerp函数控制相机(Lerp函数在人物的几种移动方式中有讲)常用!!!
public Transform playerTarget;//相机靠近的目标(一般是角色)
public float moveTime;//相机移动时间
private void LateUpdate()//注意这里一定要写在LateUpdate函数中,因为LateUpdate在Update之后执行,人物移动是在upadte中,因此是先人物移动再相机移动
{if (playerTarget!=null)//角色不为空{if (playerTarget.position!=transform.position)//相机和角色位置不相等的时候{transform.position = Vector3.Lerp(transform.position, playerTarget.position, moveTime*Time.deltaTime); }}}
一般是新建一个控制相机的空对象,把相机挂变成该对象的子对象,然后该对象挂载上面的代码脚本
方法一和方法三都还有个缺陷,那就是没有将相机设置在特定的移动范围内(也可以用代码完成)
方法3:利用cinemachine插件控制相机(可以快速设定相机跟随目标,并且将相机设定在特定范围内)
在使用cinemachine插件之前需要在包管理器中搜索Cinemachine插件,并安装
安装后由于unity版本不同,2020.3的版本的cinemachine会显示在窗口旁边(有些版本的需要在层级窗口中点击鼠标右键才可以创建cinamachine)
由于cinemahcine的功能过于繁杂,目前只要求会使用它到达相机跟随的目的,点击Create 2D Camera
这时就会出现CM vcam1对象,该对象上就挂载了虚拟相机的组件(参数过于复杂,Follow就是虚拟相机跟随的目标)
同时主相机Main Camera会自动添加CinamachineBrain组件(用来控制显示哪一个虚拟相机)
概念性的东西以后再深入研究,目前就掌握如何使用达到效果即可,1.在创建好CM vcam1对象后,将虚拟相机的Follow参数选择为想要跟随的对象,就可以实现相机跟随人物(注意,在设置好后有时会出现人相机跟随运动的角色导致角色画面模糊的情况,这个时候把CinamachineBrain的更新方法改为FixedUpadte即可)这时相机跟随已经完成了,接下来就是做相机的运动范围,
1.先在Cinema chineVirtualCamera组件中点击Add Extension
为相机添加一个边界
2.创建一个空游戏对象(最好取名CameraConfiner)为该游戏对象添加一个2D的碰撞体(这里的2D碰撞体需要是多边形碰撞器才可以),设置号边界范围后就可以给上方的Cooider 2D赋值,设置好之后测试会发现人物等其它碰撞体被挤出地图范围(这是因为人物等其它碰撞体和刚才设置的边界碰撞体相互作用导致的结果,将相机碰撞体单独设置一个图层,随后在游戏设置里面将相机层和其它图层取消碰撞效果即可)
Unity中相机跟随人物移动相关推荐
- 【转】UNITY中相机空间,投影空间的正向问题
原文链接1:https://www.cnblogs.com/wantnon/p/4570188.html 原文链接2:https://www.cnblogs.com/hefee/p/3820610.h ...
- Unity 相机跟随人物的几种方式
相机跟随一般写在生命周期LateUpdate中 1.最简单,无代码,固定距离,固定视角 最简单的就是 直接 把主相机作为Player角色的子物体,并自行固定好相机的位置和角度 优点:使用方便 缺点:使 ...
- unity3d技术摄像头跟随_unity 3d 中摄像头跟随人物移动总结
学习unity 也已经有比较成的一段时间了,但还是菜鸟级别啊,一直苦于没有师傅,如果能找到个好的师傅带领我,估计像我这样的石头也已经是很牛的人了吧,哈哈.... 好了 不开玩笑了. 在游戏中人物会移 ...
- Unity中摄像机跟随
一.固定相机跟随,这种相机有一个参考对象,它会保持与该参考对象固定的位置,跟随改参考对象发生移动 public class CameraFlow : MonoBehaviour {public Tra ...
- unity中镜头跟随鼠标移动
摄像头移动 在游戏中大家的第一人称 第三人称都是靠摄像头的移动来实现的 ,现在给大家介绍一下摄像头的随着鼠标的旋转以及控制器运动的脚本 在项目中的Main Camera上添加脚本名字随便: 然后就是脚 ...
- (转)Unity中武器与人物的碰撞检测
自:http://blog.csdn.net/Monzart7an/article/details/24435843 目前来说有三种思路,其实前两种算变种了: 1.动画关键帧回调 + 范围检测. 这个 ...
- Unity中如何跟随某个物体运动浅谈
跟随某个物体(具体哪个轴/或完全跟随)运动详解 //跟随某个物体移动 使用方式: 1.如果勾选x轴就只跟随那个物体的x轴移动 2.如果勾选x和y轴就只跟随那个物体的x和y轴移动 3.如果全勾选就跟随那 ...
- Unity中实现3D人物残影效果
一:效果演示 二:思路 --使用SkinnedMeshRenderer类中的BakeMesh方法去复制出新的Mesh --再使用Graphics.DrawMesh绘制会Mesh 三:核心代码实现 -- ...
- Unity使用虚拟相机实现人物跟踪移动
学习参考:b站Up主M_Studio(麦扣老师)的3DRPG系列教程 当前游戏已经实现了人物可以移动到点击位置. 但是存在一个问题,镜头始终是固定的,如上图所示,当人物向前移动时,它会距离镜头越来越远 ...
最新文章
- 【C++】模板函数的声明和定义必须在同一个文件中
- 电子管计算机的操作者是谁,大一计算机第一学期考试重点及相应习题 作者
- docker log 文件 清理
- 全局使用dva dispatch
- CMFCButton使用简介
- pip命令安装pygeme后 IDLE import pygame报错
- 学习前端的未来在哪里?今天详细的谈一下
- Spring AOP AspectJ 代码实例
- jdbc数据库连接池连接
- 20小时快速学习【系统动力学】
- 清华自动化大一 C++作业引爆全网,特奖得主、阿里P6:我们也做不到
- 违背基本假设的几种情况——自相关性(R语言)
- CAD中PDF转DWG
- 自制力才是你努力的第一步
- 奇葩报错之返回值为 -1073741515 (0xc0000135) ‘未找到依赖 dll‘
- 怎么看xp计算机mac地址,查找MAC地址的两种方法
- 基于Ubuntu 18.04配置固定IP方法
- 玩转Excel系列-index+match查找函数用法
- 领悟《信号与系统》之 信号与系统的描述-上节
- 基于python的语料库数据处理电子版_[异步图书].精通Python自然语言处理[PDF][16.04MB]...