ue4 蓝图点击物体_UE4蓝图实现Human Fall Flat

d4e381603c293d49bfc235752652637b.png

2018年1月19日更新

WzjFallFlat已开源

公开仓库​wzj998.coding.net

-----------------------------------------------------------------------------------------------

人类坠落平面(Human Fall Flat)这一款游戏凭借其独特而有趣的物理效果,脑洞四溢的关卡设计,给广大玩家留下了深刻的印象。

但是又该如何实现呢?

UE4中与之对应的显然是Physical Animation,一种兼顾物理效果的骨骼动画。

于是先要编辑角色的Physics Asset

b7a3146c19d50d7e43d3f8c6c6506188.png

说实话,我对这些参数了解的还不透彻,文档的说法是可以从1000,100,1000,100开始调,为了能让手伸直我把Orientation Strength弄成了29999。

并且删掉了足部和前脚掌部分的,为了简化碰撞。

角色蓝图我摸索了很久,最终发现了一种可行方案

876e8f5ca10a489550557d9ead5e1332.png

不使用CharacterMovement,RootComponent为Simulate Physics并且锁定旋转的Capsule。

PhysicsConstraint一端在Capsule另一端在SkeletalMesh的root骨骼,才能实现作为子物体的SkeletalMesh能影响父物体Capsule的运动状态。

这里的注意点是要“系在”root骨骼不然无法通过动画蓝图进行水平旋转,并且root骨骼不能真的有碰撞不然身体其他部分会受影响。

28e888f9590b481b576713759d6fef74.gif

视角控制没什么特殊的

58f0b4c710d506a7416543d9e1b7c979.png

只不过转身需要用动画蓝图的修改骨骼实现,不然不好实现“带有力的旋转”

2af6f9ae31f4fedc36f26c92517f394f.png

至于前后左右输入,我是每次输入给当前速度加上DeltaTime*加速度,暂时还没考虑防止斜向加速度会更大的处理

5cc0f278c9608518b81ce81bbbecafd2.png

当然每帧限制了一下水平最大速度

80f11a3d6b84dd31e3e701f56d8323c7.png

说到这里要讲一下是否在空中的判定,标准的实现是什么我不清楚,就用了五条射线检测下方距离。。。

12f6978ab85ef0d8d28e9829c4cc2d88.png

于是跳跃处理也呼之欲出

00a3045f736cbb2be43845e3cf3368bb.png

如此一来我们的人物可以进行基本移动了。

鼠标左右键是否按住影响两个bool变量

d934fa87fd78c9834b1f1b6ef7cdc1ae.png

按住左键时左手的旋转控制:

e814a64a89d5831430f6897e55ba7642.png

为了让操作更舒服,这里用到的RealPitch是ControlRotation的Pitch放大后的值,这样不用脖子很累看着天两手就能举高高了。

一旦手部附近有物体且正在使用这只手,就生成一个PhysicsActor一端在手部,另一端在接触物体。

07ff4365fa775262bac1501c56b99425.png

a534b03459fbf3c3495e6c952e09ee90.gif

74843965f0edd0588043781e2316e2b0.gif

剩下的主要问题就是如何实现双手抓住边缘的攀爬

一方面,当双手都有吸附时,视角Pitch影响腰部旋转

9e5e0800835aa2c6e6ee1cd62aedb687.png

然而光是这样虽然通过向下看人物胶囊体的确会上抬但还是上不去。

还需要调整胶囊体高度

8ca8d6ff7b9d923afc9fcdae659e31a1.png

(果然程序员是最大的骗子)

23c382c355eb3a17ba10b334dc968903.gif

最后宣传一下我开发中的游戏

射击与砍杀 | 中国独立游戏 | indienova 独立游戏​www.indienova.com
ed89504adb8e4a447e5fa95744f3d061.png

游戏测试q群546927310

要玩这个Wzj Fall Flat 的可以下WzjGameLauncher,已经加进游戏库了,不过真的只是个小Demo没别的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值