初学Unity踩坑之摄像机回正

前言

在很多第三人称游戏中,摄像机的方向往往就是人物移动的方向,但是有这样一个操作,就是按住某个按键之后,再移动鼠标,人物不旋转,但摄像机旋转,松开按键之后,摄像机自动回正。

踩坑

昨天在写的时候用到的是Mathf.Lerp方法,由于我只需要Y轴向上的旋转回正,所以代码是这样的:

yRotation = Mathf.Lerp(yRotation,target.eulerAngles.y,lerpSpeed * t);

其中yRotation是这一帧摄像机要旋转的角度,target.eulerAngle.y是当前人物的角度,lerpSpeed是插值速度。

这里就出现了第一个坑,由于yRotation并没有限制在0-360之间,而target.eulerAngle.y是在0-360之间的,所以摄像机在回正的过程中可能会旋转很多圈。

这里还出现了第二个坑,就是在回正过程中,摄像机不会按照摄像机与人物角度之差最小的方向去回正。

上述两个坑都是由于我使用Mathf.Lerp对角度进行插值引起的。

解决方法

这个问题昨天一直没解决,直到今天查看unity官方文档时,我看到了Mathf.LerpAngle这个方法,官方的描述是这样的:

 也就是说这个方法会主动将插值方法中的参数限制在0-360之间,于是我把代码改成了这样:

yRotation = Mathf.LerpAngle(yRotation, target.eulerAngles.y, lerpSpeed * t);

首先,摄像机回正过程中,不会再出现旋转很多圈的现象。

其次,回正过程中,摄像机会自动选择摄像机与人物角度之差最小的方向去回正。

感谢

以上内容仅代表当前的个人看法与经验,如有纰漏敬请指出,感谢。

另外如果有想学游戏的小伙伴,可以评论区一起聊聊心得,本人菜鸟一个。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity2D运动摄像机是指在Unity引擎中使用的2D场景中的摄像机运动控制组件。摄像机在游戏开发中起到非常重要的作用,它可以控制游戏画面的视角和跟随目标物体的移动。在Unity2D中,通过使用摄像机组件的属性和方法可以实现不同的运动效果。 首先,可以通过设置摄像机的位置和旋转属性来控制摄像机的基本位置和角度。这可以通过代码编写或者在Unity编辑器中进行属性设置来完成。摄像机的位置属性决定了摄像机所拍摄的画面位置,旋转属性则通过调整摄像机的角度来实现视角的变化。 其次,可以通过编写代码来实现摄像机的运动效果。例如,可以使用Lerp方法来实现平滑跟随目标物体的移动。Lerp方法可以使摄像机的位置逐渐接近目标物体的位置,从而实现平滑的跟随效果。 除了跟随移动,还可以实现摄像机的缩放效果。摄像机的Size属性可以控制摄像机视野的大小,通过改变Size的值可以实现画面的缩放效果。 此外,还可以通过编写代码来实现摄像机的抖动效果。通过在摄像机的位置上加入随机的微小偏移,可以模拟出抖动的效果,增加游戏的动态感。 总之,Unity2D运动摄像机是在2D游戏开发中非常常用的组件,通过调整摄像机的位置、旋转、缩放等属性以及使用代码控制摄像机的运动,可以实现丰富多样的视觉效果,提升游戏的可玩性和观赏性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值