查看: 2456|回复: 8
打印 上一主题 下一主题

[经验分享] 关于摄像机跟随中的碰撞缩进效果

[复制链接]

0

主题

5

听众

152

积分

设计实习生

Rank: 2

纳金币
5
精华
0
跳转到指定楼层
楼主
发表于 2017-9-1 14:26:45 |只看该作者 |倒序浏览
    小白入门,写一些比较简单的东西,就是我做一个第三人称的坦克射击Demo,过程中遇到的一个问题以及解决办法,大神请绕道啦!
    直入主题,关于摄像机跟随 有很多实现方法,比如
  • 把 camera 作为角色的子物体,跟随角色移动。这种跟随会比较生硬,角色的移动和相机的移动是绝对同步的,同时进行的。   
  • 给camera添加脚本控制让camera去跟角色做插值运算。这种跟随则会比较舒缓,有动态跟随的效果。
    其中,为了能够达到和第一种摄像机始终看向角色前方,并且让角色完全出现在镜头中,我就给角色正后方加了一个CameraBox(空物体)作为角色的子物体,然后让摄像机去跟CameraBox做位置插值,然后让摄像机LookAt向角色的正前方,完美解决!
    但是这两种方法都有同一个问题:镜头穿帮。
QQ图片20170901213944.png
    当角色背向并靠近碰撞体时,相机会直接插入碰撞体内部,这样画面就会被碰撞体挡住,无法正常显示角色了。所以为了解决这个问题,就要用到 射线 的思想了,下边是部分代码,用来阐述大概思想。
  1. //检测射线碰撞并填充 hit
  2. RaycastHit hit;
  3. float L2;   
  4. if (Physics.Raycast(FirePoint.position, -FirePoint.forward, out hit, L1))
  5. {
  6.   L2 = hit.distance;
  7. }
  8. else {
  9.     L2 = L1;
  10. }
  11. CameraBox.position = L2 * -FirePoint.forward.normalized + FirePoint.position;
复制代码
图片1.png
其中,L1为预设的射线最长距离,Raycast方法有16种重载,这里我们用的是(射线发射点+方向+hit + 射线最大长度)这一种。在角色头顶设置一个子物体FirePoint(空物体)作为射线的起始点,方向为FirePoint的z轴负方向,最大距离为L1。
图片2.png
因为方法返回的是一个布尔值,所以可以将方法放在if中进行判断,如果有发生碰撞,方法填充被out修饰的hit,然后根据hit.distance得到发射点到碰撞体的距离 ,从而最终算出 CameraBox.position


完整脚本:
游客,如果您要查看本帖隐藏内容请回复
已有 1 人评分纳金币 收起 理由
艾西格亚 + 5 很给力!

总评分: 纳金币 + 5   查看全部评分

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏1 支持支持0 反对反对0
回复

使用道具 举报

0

主题

5

听众

152

积分

设计实习生

Rank: 2

纳金币
5
精华
0
沙发
发表于 2017-9-2 09:45:27 |只看该作者
回复

使用道具 举报

0

主题

1

听众

1932

积分

助理设计师

Rank: 4

纳金币
451
精华
0
板凳
发表于 2017-9-4 17:18:32 |只看该作者
学习一下
回复

使用道具 举报

Kasug    

0

主题

2

听众

962

积分

初级设计师

Rank: 3Rank: 3

纳金币
151
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2017-9-20 17:24:19 |只看该作者
非常感谢分享
回复

使用道具 举报

0

主题

2

听众

1752

积分

助理设计师

Rank: 4

纳金币
19
精华
0
5#
发表于 2017-9-23 09:57:49 |只看该作者
关于摄像机跟随中的碰撞缩进效果
回复

使用道具 举报

0

主题

1

听众

832

积分

初级设计师

Rank: 3Rank: 3

纳金币
11
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2017-9-23 12:12:33 |只看该作者
学习学习~!
回复

使用道具 举报

0

主题

1

听众

343

积分

设计实习生

Rank: 2

纳金币
6
精华
0
7#
发表于 2017-10-23 21:02:37 |只看该作者
赞一个。学习了
回复

使用道具 举报

0

主题

5

听众

1842

积分

助理设计师

Rank: 4

纳金币
49
精华
0
8#
发表于 2018-4-15 15:38:28 |只看该作者
学习一下
回复

使用道具 举报

9#
无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-27 11:33 , Processed in 0.089244 second(s), 35 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部