该开发日记旨在通过新FPS项目的建模,动画和修复错误来解释我的工作
在假期期间,我想开始使用unity的网络系统并创建第一人称射击游戏。 在暂停该项目以支持大学工作之前,我已经获得了一个系统,在该系统中,玩家可以通过LAN或在线进行比赛,其他人也可以参加。 玩家可以独立于其他玩家移动并跳跃。 玩家拥有一门装有弹药的机枪,可以重新加载脚本并通过动画进行加载,播放粒子效果进行射击和撞击效果,并可能对其他玩家造成伤害。 玩家也可能在一定时间后死亡并重生。
在选择项目备份并确定要选择的方向时,我注意到了一个错误,该错误使玩家在空降时也能抓住墙壁和屋顶,从而可以在空中行走。 虽然这不是故意的,但在墙壁上跑来跑去非常有趣。 我决定将项目的重点放在墙骑方面,并以“每个人都像《守望先锋》中的露西欧一样扮演,但他们都有机枪”的方式向我和朋友推销该项目。
考虑到这一点,我研究了修复该错误。 这个问题与CollisionFlags有关。 第一次进行移动时,我使用了字符控制器,以便可以使用CharacterController.Move()函数来减少必须编写的代码量。 因此,我可以访问CharacterController.CollisionFlags,它返回胶囊的哪些部分与环境相撞。 这意味着我可以只检查CharacterController CollisionFlags是否等于CollisionFlags.CollidedBelow来允许玩家跳跃,而不是在地板上进行OnCollisionEnter()检查或任何OnCollisionEnter()检查。
我有一个ApplyGravity()函数,该函数模拟了不错的重力(如下所示),但是仅在玩家完全不碰撞时才调用此函数。 除非明确没有,否则下面的代码在Update()中运行


我对上述功能进行了重新设计,以允许在墙上骑行,但这样玩家就无法抓住上面的屋顶,并为它们设置了计时器,确定可以在墙上停留多长时间以及进行冷却他们什么时候可以重新抢墙。 下面是代码。


墙壁骑行,以及地面运动和重力,都感觉非常光滑。 因此,我决定艺术风格将反映这一点。 所有模型都将具有高多边形或平滑效果,粒子效果不会出现锯齿,音乐将是柔和的歌曲。
在这个项目的开始,我没有3D建模软件的经验,也没有制作纹理的经验。 因此,为了确保它做得很好,我从专注于玩家建模开始。 我选择使用Blender进行模型制作,主要是因为它是免费的。 我遵循了塞巴斯蒂安·拉格(Sebastian Lague)的有关如何创建低多边形人体模型的教程。 我从一开始就知道创建自己的动画超出了范围,因此决定使用Adobe的Mixamo就足够了。 我也知道Mixamo可以平滑低多边形模型,因此创建一个这样的模型将不是问题。 从搅拌机出来的最终产品(在mixamo之前)如下所示。


现在,我可以确定自己已经制定了游戏外观和游戏计划,并且从中取得的进展,现在可以专注于创建更多视觉资产(例如粒子效果),并利用Mixamo的动画来制作游戏。游戏外观,我想要它。