unity-学习笔记-摄像机的一些使用心得

本文分享了一种简单易懂的Unity摄像机跟踪和旋转方法,通过将摄像机作为物体子级实现跟随,使用MouseX实现相机旋转,并通过DG.Tweening插件平滑移动。同时,解决了旋转视角后人物移动同步的问题,涉及Quaternion.LookRotation和RotateTowards方法,确保人物朝向与摄像机一致。
摘要由CSDN通过智能技术生成

摄像机的使用心得

心得

这是一个对我而言比较困难的一个门槛,因为我自己的数学不是很好,网上的教程使用的都是vector3里面的slerp,lerp等插值的方法去对相机本身做一个控制,对没有系统学过的我来说转化为自己的内容比较吃力
今天在研究的过程中,找到了一些比较方便快速开发并且比较简单易懂的方法,想记录一下,如果有萌新的u3d开发小白可以试试我的方法,我个人对这个方式还是比较满意的

使用

首先是摄像机的跟踪,大多数的大佬使用的都是在update方法里获得摄像机和物体之间的相对位置,从而控制他们的同步,我这里的一个最快速简单的思路就是把这个摄像机挂在物体上,成为物体的子级,这样物体一动,摄像机就自然而然跟着动了

接着是摄像机能通过控制鼠标的水平和竖直方向的移动以物体为中心进行旋转的功能实现,这个功能看似小,但是功能本身的意义很重大,因为他关乎了用户是否能更加全面和直观的对游戏进行更深入的了解和观察,想想你只能看到眼前的物体,即使移动了物体,同一个场景里的物体没有旋转摄像机你看到的永远都是一个角度下的产物,耐久度一定会大打折扣的
所以这个功能十分的关键,那么如何实现呢
网上也有很多的方法
我的方法比较简单粗暴
给你需要以此为中心进行旋转的物体的中心点创建一个空对象
然后把摄像机挂在他的子级下,然后获得鼠标下的水平位置的移动信息,再通过控制这个空对象的y值旋转达到以物体为中心进行摄像机旋转的功能需求
这个不需要涉及到过多的向量知识,能方便萌新和急需要现成的功能实现的人快速开发一个摄像机的跟踪和视角转换

		float x = Input.GetAxis("Mouse X");
        cameraController.transform.Rotate(new Vector3(0, x, 0));

是的,你没看错,需要写的代码就只有这两行,cameraController这个是一个声明,public或者在start,awake方法里GameObject.find方法都可以,找到你设置的空对象就可以了
2021.7.6更新

通过dg的tween插件可以实现的平滑处理相机移动的api
在这里插入图片描述
通过dolocalmove可以平滑的移动相机的位置和角度,提高用户体验

最后

当然,一直使用这个毕竟不是长久之计,目前我也没有太大的时间去钻研这个数学的问题,只能等项目上线后自己补补习,把这些知识真正学会并应用起来,到时再写个笔记吧
加油~

同天更新一下

旋转视角后同步移动的问题

标题的意思可能不是很好理解
意思就是当旋转了摄像机后,移动人物的时候,人物需要时刻把摄像机的正面当做自己的正面,也就是摄像机旋转了之后,移动虚拟摇杆,人物本身移动时的旋转也要同步,不能虚拟摇杆里是右上的移动,人物也是右上的移动方向,但是人物本身的旋转不是朝向那边的
这个问题的解决办法就是添加如下代码

Vector3 vec = new Vector3(leftController.GetTouchPosition.x * this._dir, 0, leftController.GetTouchPosition.y * this._dir);
Quaternion newRotation = Quaternion.LookRotation(vec);
Desktop.Instance.GetNowPlayer().transform.localRotation = Quaternion.RotateTowards(Desktop.Instance.GetNowPlayer().transform.localRotation, newRotation, 100 * Time.deltaTime);

他的意思就是获得虚拟摇杆的x和y值
把他作为旋转的数据
同步到人物的localrotation上
使用quaternion.rotatetowards方法,里面的参数第一个是旋转的物体本身现在的方向
第二个是需要旋转的角度,第三个是旋转的时间
这里需要注意一下,使用这个方法时,当前对象的旋转值需要重置,也即是归零
否则就会出现前面讲到的因为摄像机的旋转导致人物在移动的时候旋转的方向出现了问题(如反方向等)
这个问题折腾了两天左右,主要是真的对这些个方法不太熟悉,也来不及认真的学,所以先记录一下~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值