unity3d实现第一人称射击游戏之CS反恐精英(二)(人物的移动和场景的碰撞关系)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一节我们简单的实现了第一人称的移动,但是只是让枪有了漫游的效果,本章来实现它的物理效果。

1 先给枪添加一个碰撞器组件,为了简单我们添加一个box collider来模拟碰撞

调整下碰撞器大小,将它设置成如下的长方体,我们来模拟下人物的碰撞。

由于场景是自带碰撞器的所以我们不用给场景添加碰撞器组件。

然后给你的 “人物”(这个碰撞器所挂载的空物体我将它叫做人物)添加一个刚体。

我们此时运行跑一下发现确实穿不了墙了,但是人物会被碰撞后左右上下乱滚,怎么解决呢。

我首先将刚体组件的Constraints下的碰撞效果的旋转全部取消 就不会晕了,如下图

由于人物被碰撞后移动的位置很小并且我们的习惯是一直摁着前进键去撞墙,所以物体被碰撞后的position不用过多考虑。

运行一下发现有点意思 了哦。

但是还有一个 小bug就是人物看向天前进会上天,这不是我们想要的,所以人物移动的脚本需要修改一下。

写代码前先想一想如何实现,我们想让人物看向天的时候沿着自

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值