热烈庆祝 Mario Forever 社区成立五周年!

查看: 105|回复: 3

[讨论] (求解答)个人Godot使用问题集合

[复制链接]

9

主题

148

回帖

1

精华

无敌地花

经验
3030
硬币
698 枚

PK!MF4 冠军赞助用户请务必再光临秘密合战!

发表于 2024-9-24 23:04:15 | 显示全部楼层 |阅读模式
今天正式开始尝试使用godot引擎,然后我打算直接实操入手,就是Thunder Engine
所以一般问题都是针对Thunder Engine的
Godot版本:4.2.2
哇哈哈

9

主题

148

回帖

1

精华

无敌地花

经验
3030
硬币
698 枚

PK!MF4 冠军赞助用户请务必再光临秘密合战!

 楼主| 发表于 2024-9-24 23:08:10 | 显示全部楼层
问题1:我尝试将暂停菜单支持跳跃键也可选择,但这样的问题是解除暂停后马里奥对应的事件也会触发(即跳跃)
我的做法如下:
res://engine/components/ui/generic/menu_selection.gd下,_physics_process改成
  1. func _physics_process(delta: float) -> void:
  2.         if !focused || !get_parent().focused: return
  3.        
  4.         if Input.is_action_just_pressed(trigger_action) or Input.is_action_just_pressed("m_jump"):
  5.                 _handle_select()
复制代码

其他没改,但是我尝试去研究逻辑发现暂时没有什么逻辑上的问题
res://engine/objects/players/behaviors/player_physics_behavior.gd下也有对暂停进行了处理
  1. func _physics_process(delta: float) -> void:
  2.         if player.get_tree().paused: return
复制代码

虽然不改问题也不大,但我还是想看看有没有什么好的解决方法
哇哈哈

9

主题

148

回帖

1

精华

无敌地花

经验
3030
硬币
698 枚

PK!MF4 冠军赞助用户请务必再光临秘密合战!

 楼主| 发表于 2024-9-24 23:54:32 | 显示全部楼层
暂时解决,解决方案:解除后当作马里奥已经完成了跳跃
res://engine/components/pause/continue_selection.gd改为如下代码:
  1. extends MenuSelection

  2. @onready var pause: Control = $"../.."

  3. func _handle_select() -> void:
  4.         super()
  5.         pause.toggle(false)
  6.         Thunder._current_player._has_jumped = true
复制代码
哇哈哈

1

主题

1

回帖

0

精华

可爱飞鱼

经验
172
硬币
54 枚
发表于 2024-9-30 22:31:15 | 显示全部楼层
本帖最后由 ReflexGURU 于 2024-9-30 22:32 编辑

a better but still hacky approach would be adding something like:
await get_tree().physics_frame
before the pause.toggle function execution

评分

参与人数 1经验 +3 硬币 +2 收起 理由
快乐mario9 + 3 + 2

查看全部评分

您需要登录后才可以回帖 登录 | 创建账户

本版积分规则