Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

书接上文《Blender图解教程:马里奥食人花三部曲(二)骨骼绑定和动画》,这一回我们将进入Godot游戏引擎,完成最关键的部分,当目标(马里奥)接近食人花,食人花可以根据目标的位置进行捕食

下集预告

先放个下集预告
Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

效果图

这才是本章节的效果图

Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

文章目录

步骤

1. 模型导入Godot Engine

将从blender导出的“piranhaflower.gltf”导入Godot,并按照《Blender图解教程:导出glTF骨骼动画到Godot引擎的流程与注意事项》所述,生成tscn场景以后,其场景树如下:

Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

老王出于强迫症,把两个“piranhaflower”节点重新名了下名,这不是必须的

Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

选择AnimationPlayer对动画片段做如下设置:

  • Idle设置为默认动画,并且设置循环
  • Attack设置为循环

2. 构造场景

  • 为"Skeleton"节点添加一个SkeletonIK子节点。
  • 为“PiranhaFlower”节点添加一个Position3D子节点,并更名为“Target”
    Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

3. 设置SkeletonIK

SkeletonIK节点:

  • 必须是Skeleton的子节点。
  • 它直接继承于Node所以是2D/3D通用的节点。
  • SkeletonIK实际就是在Skeleton上定义了一个IK链。

设置SkeletonIK属性时需要参考上一节的骨架结构,如下:
Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

Root Bone是IK链的根部。
Tip Bone是IK链的顶部。
Interpolation是插值系数,决定着从当前位置到完全IK位置的速度。
Target Node是目标节点,这里我们将它设为场景中的"Target"节点。
Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

4. 测试

测试一下:

我们先手动把"Target"摆放到食人花的前面
Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

选择“SkeletonIK”,然后点击播放IK

Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

Godot Engine:马里奥食人花三部曲(三)用SkeletonIK实现食人花捕食目标

5. 运行时实现

Created with Raphaël 2.2.0Idle动画马里奥接近?Hold动画停顿一段时间,给目标逃跑的时间获取实际目标位置,并设置Target位置Attack动画捕捉成功?结束yesyes

SkeletonIK的相关方法

start ( bool one_time=false ) 开启IK
stop ( ) 停止IK
上一篇:unity 动画


下一篇:Blender图解教程:什么是正向动力学(Forward Kinematics简称FK)和反向动力学(Inverse Kinematics 简称IK)