上一节我们简单的实现了第一人称的移动,但是只是让枪有了漫游的效果,本章来实现它的物理效果。
1 先给枪添加一个碰撞器组件,为了简单我们添加一个box collider来模拟碰撞
调整下碰撞器大小,将它设置成如下的长方体,我们来模拟下人物的碰撞。

由于场景是自带碰撞器的所以我们不用给场景添加碰撞器组件。
然后给你的 “人物”(这个碰撞器所挂载的空物体我将它叫做人物)添加一个刚体。

我们此时运行跑一下发现确实穿不了墙了,但是人物会被碰撞后左右上下乱滚,怎么解决呢。
我首先将刚体组件的Constraints下的碰撞效果的旋转全部取消 就不会晕了,如下图

由于人物被碰撞后移动的位置很小并且我们的习惯是一直摁着前进键去撞墙,所以物体被碰撞后的position不用过多考虑。
运行一下发现有点意思 了哦。
但是还有一个 小bug就是人物看向天前进会上天,这不是我们想要的,所以人物移动的脚本需要修改一下。
写代码前先想一想如何实现,我们想让人物看向天的时候沿着自身z轴移动的向量在世界坐标的xz轴平面的投影移动;
unity在Vector3中封装的有向量在面上的投影,我们将代码改动下 代码如下:

该博客主要介绍了在Unity3D中实现第一人称射击游戏的人物移动和场景碰撞关系。通过给枪添加Box Collider组件模拟碰撞,并为人物添加刚体组件以防止穿墙。同时,通过调整刚体组件的Constraints消除碰撞后的旋转效果。为解决人物看向天空时会上升的问题,修改人物移动脚本,利用Vector3.ProjectOnPlane方法将人物z轴在xz平面的投影应用于移动,确保人物不会垂直上升。
最低0.47元/天 解锁文章
4851

被折叠的 条评论
为什么被折叠?



