2018年1月19日更新
WzjFallFlat已开源
公开仓库wzj998.coding.net-----------------------------------------------------------------------------------------------
人类坠落平面(Human Fall Flat)这一款游戏凭借其独特而有趣的物理效果,脑洞四溢的关卡设计,给广大玩家留下了深刻的印象。
但是又该如何实现呢?
UE4中与之对应的显然是Physical Animation,一种兼顾物理效果的骨骼动画。
于是先要编辑角色的Physics Asset
说实话,我对这些参数了解的还不透彻,文档的说法是可以从1000,100,1000,100开始调,为了能让手伸直我把Orientation Strength弄成了29999。
并且删掉了足部和前脚掌部分的,为了简化碰撞。
角色蓝图我摸索了很久,最终发现了一种可行方案
不使用CharacterMovement,RootComponent为Simulate Physics并且锁定旋转的Capsule。
PhysicsConstraint一端在Capsule另一端在SkeletalMesh的root骨骼,才能实现作为子物体的SkeletalMesh能影响父物体Capsule的运动状态。
这里的注意点是要“系在”root骨骼不然无法通过动画蓝图进行水平旋转,并且root骨骼不能真的有碰撞不然身体其他部分会受影响。
视角控制没什么特殊的
只不过转身需要用动画蓝图的修改骨骼实现,不然不好实现“带有力的旋转”
至于前后左右输入,我是每次输入给当前速度加上DeltaTime*加速度,暂时还没考虑防止斜向加速度会更大的处理
当然每帧限制了一下水平最大速度
说到这里要讲一下是否在空中的判定,标准的实现是什么我不清楚,就用了五条射线检测下方距离。。。
于是跳跃处理也呼之欲出
如此一来我们的人物可以进行基本移动了。
鼠标左右键是否按住影响两个bool变量
按住左键时左手的旋转控制:
为了让操作更舒服,这里用到的RealPitch是ControlRotation的Pitch放大后的值,这样不用脖子很累看着天两手就能举高高了。
一旦手部附近有物体且正在使用这只手,就生成一个PhysicsActor一端在手部,另一端在接触物体。
剩下的主要问题就是如何实现双手抓住边缘的攀爬
一方面,当双手都有吸附时,视角Pitch影响腰部旋转
然而光是这样虽然通过向下看人物胶囊体的确会上抬但还是上不去。
还需要调整胶囊体高度
(果然程序员是最大的骗子)
最后宣传一下我开发中的游戏
射击与砍杀 | 中国独立游戏 | indienova 独立游戏www.indienova.com游戏测试q群546927310
要玩这个Wzj Fall Flat 的可以下WzjGameLauncher,已经加进游戏库了,不过真的只是个小Demo没别的