You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置自定义属性动画关键帧时,如何自动添加其他属性关键帧?

实现自定义属性关键帧自动关联其他属性的动画关键帧

完全可以实现,而且不需要修改AnimationPlayer或Animation节点本身,通过编写编辑器插件监听关键帧添加事件即可达成需求。以下是具体实现方案:

核心思路

通过编辑器插件监听动画编辑器的keyframe_added信号,当检测到自定义属性被添加关键帧时,自动为目标属性(比如Position和Rotation Degrees)在同一时间点插入关键帧。

代码实现(Godot 3.x/4.x 通用,需调整细节适配版本)

创建一个@tool脚本作为编辑器插件:

@tool
extends EditorPlugin

func _enter_tree():
    # 获取动画编辑器实例并监听关键帧添加事件
    var animation_editor = get_editor_interface().get_animation_editor()
    if animation_editor:
        animation_editor.connect("keyframe_added", self, "_on_keyframe_added")

func _on_keyframe_added(animation: Animation, track_index: int, time: float):
    # 获取当前选中的动画目标节点
    var selected_nodes = get_editor_interface().get_selection().get_selected_nodes()
    if selected_nodes.size() == 0:
        return
    var target_node = selected_nodes[0]

    # 获取当前添加关键帧的轨道属性路径
    var track = animation.tracks[track_index]
    var property_path = track.path.get_converted_to_target(target_node)

    # 替换为你的自定义属性名,比如"custom_prop"
    if property_path == "custom_prop":
        # 自动为Position添加关键帧
        self._add_auto_keyframe(animation, target_node, "position", time)
        # 自动为Rotation Degrees添加关键帧(2D节点适用,3D节点可改为"rotation")
        self._add_auto_keyframe(animation, target_node, "rotation_degrees", time)

func _add_auto_keyframe(animation: Animation, target_node: Node, prop_name: String, time: float):
    # 查找目标属性的轨道,不存在则创建
    var track_idx = animation.find_track(target_node, prop_name)
    if track_idx == -1:
        track_idx = animation.add_track(Animation.TYPE_VALUE)
        animation.track_set_path(track_idx, NodePath(prop_name))
    
    # 在指定时间插入当前属性值作为关键帧
    var prop_value = target_node.get(prop_name)
    animation.key_track(track_idx, time, prop_value)

func _exit_tree():
    # 退出时断开信号,避免内存泄漏
    var animation_editor = get_editor_interface().get_animation_editor()
    if animation_editor:
        animation_editor.disconnect("keyframe_added", self, "_on_keyframe_added")

使用步骤

  1. 将上述脚本保存为AutoKeyPlugin.gd,放在项目的addons/auto_key_plugin目录下(需自行创建目录)。
  2. 在Godot编辑器的项目设置 > 插件中启用该插件。
  3. 选中目标节点,打开动画编辑器,当你为自定义属性添加关键帧时,Position和Rotation Degrees会自动在同一时间点添加对应关键帧。

注意事项

  • 请根据你的实际自定义属性名修改代码中的property_path == "custom_prop"判断条件。
  • 若目标是3D节点,将rotation_degrees替换为rotation或rotation_degrees(根据节点类型调整)。
  • 该方案仅在编辑器环境生效,不会影响运行时逻辑。

内容的提问来源于stack exchange,提问作者cak3_lover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 13:41:12