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

使用点击拖拽控制时Sprite无法水平翻转的问题求助

问题分析与解决方案

核心问题

  1. 方向判断逻辑存在隐患:你直接用mouse_pos < global_position这类整体Vector2比较,Godot中Vector2的大小判断是先比x轴、x相等再比y轴,若鼠标在玩家左右但上下位置差异大,可能出现逻辑偏差(虽当前print输出正常,但判断逻辑不严谨)。
  2. 动画关键帧覆盖代码设置:既然键盘控制直接设置flip_h有效,拖拽时无效,大概率是AnimatedSprite的动画中存在flip_h关键帧——动画播放时会强制将flip_h重置为关键帧值,覆盖代码的动态设置。

修复步骤

1. 修正方向判断逻辑(只比较x轴)

将拖拽控制代码中的方向判断部分替换为:

var mouse_pos = get_global_mouse_position()
if mouse_pos.x < global_position.x:
    $AnimatedSprite.set_flip_h(true)
    print("face left")
elif mouse_pos.x > global_position.x:
    $AnimatedSprite.set_flip_h(false)
    print("face right")

只基于x轴坐标判断左右,确保方向逻辑精准。

2. 移除动画中的flip_h关键帧

打开AnimatedSprite的动画编辑器:

  • 找到flip_h对应的轨道,若存在关键帧则全部删除;
  • 确保动画播放时不会强制覆盖flip_h属性,让代码能动态控制翻转状态。

额外优化(可选)

可以避免重复设置相同的flip_h值,减少不必要的节点调用:

var mouse_pos = get_global_mouse_position()
var should_flip_left = mouse_pos.x < global_position.x
if $AnimatedSprite.flip_h != should_flip_left:
    $AnimatedSprite.flip_h = should_flip_left
    print(should_flip_left ? "face left" : "face right")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:00:29