【Unity】FPS游戏中的物理引擎——角色控制器(CharacterController)和刚体(Rigidbody)初解

今天会谈到角色控制器和刚体主要是为了做一个游戏人物的控制器,角色控制器和刚体各有各的优点。

首先说一下刚体吧,刚体这个组件可以说是做一些真是物理游戏的开发者的福音,只要你给物体加上刚体基本可以算是给它配上了一个物理系统,已经和日常生活中的物体差不多了,刚体可以通过施加力进行运动,刚体组件内部有施加力的方法,感兴趣的可以自行搜索,这里只是讲一下对它的理解。此外刚体还有一些摩擦力、角阻力、是否使用重力、碰撞检测的方式、冻结坐标冻结旋转配置都可以在Inspector里面修改,十分的方便。如果说你只是做一些模拟爆炸效果或者和物理相关的一些系统,那完全可以用刚体,因为各种属性都已经封装好了,不需要过多的敲代码。

但是在做游戏人物控制器时,个人时不建议用刚体去做的,如果是做一些真实物理世界的游戏人物还好,两者都可以用。但是往往开发的时候不会去追求太过于真实,因为这可能会增加工作量和开发成本,也有些游戏是完全和真实物理完全没有关系的,这种时候就可以用角色控制器了,它相比刚体的优势在于它更像是针对第一人称和第三人称游戏封装的组件,而刚体是针对真实物理封装的。

角色控制器的很多功能刚体没有的,第一个是有爬坡角度的设置就是你控制人物可以爬上多少度的斜坡,我猜测一些游戏(比如刺激战场)角色能在近乎垂直的悬崖底部爬上去可能是因为石头表面的碰撞器是由多个面构成的角色在往上爬的时候通过了某些面的判定进而一步一步的爬上去。第二个是可以设置角色可以上多高的坎,换种说法就是可以上多高的楼梯。第三个就是可以设置一个皮肤的厚度,大概意思就是角色能离一个有碰撞体的物体多近。这些东西刚体都没有如果要实现显然会增加很多工作量,此外角色控制器SimpleMove()和isGrounded这个属性不建议使用。前者是因为附带了重力,既然我们需要可控的重力那就不应该用这个,当然如果是一些简单的游戏那没什么问题。后者是因为经常会出现一些莫名的错误,这个纯粹是个人原因。个人感觉用角色控制器代码的复用性会比较高,工作量也会较少。

你可能感兴趣的:(unity,游戏开发,unity3d)