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

最后都变了- 提交于 2020-05-02 15:59:11

书接上文《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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!