本文主要是介绍【C#】【Unity】第三人称摄像机跟随人物移动时碰撞到墙壁等,摄像机不穿越墙壁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目前大部分第三人称游戏的摄像机在遇到墙壁等狭隘空间的时候,都选择让摄像机不穿越到墙壁里面,而是让摄像机保持在墙壁表面。
分析情况:(红色方框为摄像机 黑色方框为墙壁)
当前情形摄像机还没达到墙壁摄像机仍保持正常效果。
当人物进一步靠近墙壁的时候,摄像机穿过墙壁。(造成后果,摄像机视角中墙壁被透明化)
当人物靠近,摄像机不会穿越墙壁而处于墙壁表面上的位置(这是我们想要的效果)
实现效果分析:
出现摄像机穿越的问题,正是摄像机与人物之间出现了其他物体,而摄像机不做任何处理。
所以我们可以通过着手处理 摄像机与人物之间的物体来实现效果。
我们可以通过射线检测。
通过在人物与摄像机之间增加射线(实现当前效果,射线必须从人物身上发出到摄像机上,原因分析在最后内容)
当射线检测到人物与摄像机之间有碰撞物体,我们可以通过获取射线碰撞信息来确定碰撞点,将摄像机的位置移动到碰撞点上,我们便能实现我们需要的效果。
如果射线是从摄像机发射到人物身上的,我们实现的效果会不一样。如图
摄像机新位置会处于外墙上面,摄像机镜头中的墙壁,也会变成不可视。
射线起点的不同对应着两种不同的效果,看个人需求使用。
如果想了解代码,可以查看官网资源包的滚球游戏。
这篇关于【C#】【Unity】第三人称摄像机跟随人物移动时碰撞到墙壁等,摄像机不穿越墙壁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!