书接上文《Blender图解教程:马里奥食人花三部曲(二)骨骼绑定和动画》,这一回我们将进入Godot游戏引擎,完成最关键的部分,当目标(马里奥)接近食人花,食人花可以根据目标的位置进行捕食
下集预告
先放个下集预告
效果图
这才是本章节的效果图
步骤
1. 模型导入Godot Engine
将从blender导出的“piranhaflower.gltf”导入Godot,并按照《Blender图解教程:导出glTF骨骼动画到Godot引擎的流程与注意事项》所述,生成tscn场景以后,其场景树如下:
老王出于强迫症,把两个“piranhaflower”节点重新名了下名,这不是必须的
选择AnimationPlayer
对动画片段做如下设置:
- Idle设置为默认动画,并且设置循环
- Attack设置为循环
2. 构造场景
- 为"Skeleton"节点添加一个
SkeletonIK
子节点。 - 为“PiranhaFlower”节点添加一个
Position3D
子节点,并更名为“Target”
3. 设置SkeletonIK
SkeletonIK
节点:
- 必须是
Skeleton
的子节点。 - 它直接继承于
Node
所以是2D/3D通用的节点。 SkeletonIK
实际就是在Skeleton
上定义了一个IK链。
设置SkeletonIK
属性时需要参考上一节的骨架结构,如下:
Root Bone
是IK链的根部。Tip Bone
是IK链的顶部。Interpolation
是插值系数,决定着从当前位置到完全IK位置的速度。Target Node
是目标节点,这里我们将它设为场景中的"Target"节点。
4. 测试
测试一下:
我们先手动把"Target"摆放到食人花的前面
选择“SkeletonIK”,然后点击播放IK
5. 运行时实现
Created with Raphaël 2.2.0 Idle动画 马里奥接近? Hold动画 停顿一段时间,给目标逃跑的时间 获取实际目标位置,并设置Target位置 Attack动画 捕捉成功? 结束 yes yes
SkeletonIK的相关方法
start ( bool one_time=false ) | 开启IK |
stop ( ) | 停止IK |
来源:oschina
链接:https://my.oschina.net/u/4308645/blog/4262198