Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
Cinemachine摄像机错位弹开
花京院典铃发起了问答2020-12-18
6
回复
571
浏览

CameraController脚本控制摄像机切换可移动范围,Cam1为摄像机,Limit1、Limit2是两个PolygonCollider2D

开始时Player在limit2区域里,当Player进入limit2区域时将摄像机的Bound Shape 2D更改为Limit2(演示图片中的1-2-3),但是当相机范围触碰到边界的左边后,摄像机就会被挤出这个区域(演示图片4),并且只当摄像机更改Bounding Shape 2D 后才会发生这种情况,回到初始的区域中不会发生,也只会在碰到靠外的边界时才会反弹,在两个区域间切换没有问题。并且如果取消勾选Confine Screen Edge也不会发生这种情况,请问如何解决?

20201218_113429_5480.mp4 预览 下载
所有回复
  • 老师_Trigger 2020-12-20

    同学你好,把物理检测的碰撞矩阵对应的层级取消勾选,这样就不会弹出去了

    • 花京院典铃 2020-12-22

      老师你好,我把摄像机放在一个Layer里,用来限制摄像机范围的多边形碰撞体放在另一个Layer里,并且他们相互不会产生碰撞,但是还是无法解决,请问具体操作方式是什么?

      (0) 回复
    • 老师_Trigger 2020-12-22

      回复 @ 花京院典铃: Edit->ProjectSettings->physics(physics2D)->往下拉最下边,这个在很多课程里都有讲解,如果同学不是很清楚是做什么用的,可以去部分学习一下,ruby那个案例里就有讲解,包括给cinemacine做边界的问题

      (0) 回复
    • 花京院典铃 2020-12-22

      回复 @ 老师_Trigger: 我就是这样操作的,还是无法解决

      (0) 回复
    • 花京院典铃 2020-12-22

      回复 @ 老师_Trigger: 本身摄像机用的多边形碰撞体就是is trigger,问题是更换边界后摄像机碰到边界摄像机会被弹出去,而不是角色发生碰撞

      (0) 回复
    • 花京院典铃 2020-12-22

      回复 @ 老师_Trigger: 老实你好,问题解决了,在代码中更改Bounding Shape 2D前,要调用Confiner的InvalidatePathCache()函数,好像是要清除之前的缓存,不能直接修改边界。

      (0) 回复
    还有0条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!