标签: gdscript

Godot引擎与KinematicBody的碰撞不起作用

我在摆弄Godot引擎,并尝试了一些小游戏。

但是我似乎无法获得有关碰撞的信息。

if is_colliding():
    print ("Collision with " + get_collider())
    get_node("Sprite").set_texture(walk_cycle_right_1)
    move_state_right = 1
    set_pos(Vector2(get_pos().x -10, get_pos().y))
Run Code Online (Sandbox Code Playgroud)

它总是打印false。我正在用命令移动我的角色(KinematicBody2d-> Sprite/CollisionShape2dset_pos

collision gdscript godot

5
推荐指数
1
解决办法
2118
查看次数

Godot 让物品跟随鼠标

我正在 Godot 3.0 中制作 2D 平台游戏,我想让玩家使用鼠标瞄准来投掷/射击物品(类似于泰拉瑞亚中的弓和枪)。我该怎么做呢?我正在使用 gdscript。

mouse 2d gdscript godot

5
推荐指数
1
解决办法
8112
查看次数

Godot - 按需制作标签,并使用 GDscript 设置其字体大小

不过度解释,我基本上需要创建未知数量的标签和未知的文本。一切都很好,花花公子 - 有效。我似乎无法找到如何更改其字体大小。

这是我所拥有的:

for string in string_list:
    var new_label = Label.new()
    new_label.text = string
    new_label.set("custom_fonts/font", load(FONTPATH))
    new_label.set("custom_fonts/settings/size", FONTSIZE)
    hbox.add_child(new_label)
Run Code Online (Sandbox Code Playgroud)

我在 QA 论坛上找到了加载字体行,并从中推断出如何设置设置大小行。但它们似乎不起作用,Godot 也没有抛出任何错误。在运行时执行此操作 - 如果有任何区别。

搜索了官方文档和 QA。对戈多来说相当陌生,所以我可能找错地方了。

fonts label gdscript godot

5
推荐指数
1
解决办法
6648
查看次数

如何从 godot 中的预加载脚本调用变量?

当我在 godot 中制作预加载脚本并在其中放入变量时,如何在其他脚本中调用该变量?

是否有一种特殊的方法来调用我不知道的变量,或者是否有比预加载脚本更好的方法?

gdscript godot

5
推荐指数
1
解决办法
5787
查看次数

(Godot Engine) 使用 Geometry 的 merge_polygons_2d() 方法合并两个以上的多边形

考虑以下场景:给定 n 个像“阴影”(具有减半 alpha 值的黑色)的 Polygon2D 节点,如何使用 merge_polygons_2d() 方法将所有这些节点组合成单个 Polygon2D 节点?

3 个叠加多边形的示例。

使用以下硬编码代码,我成功地将所有三个多边形合并为一个。但我无法弄清楚如何通过迭代来自动化该过程,以避免在有超过 10.. 20.. 多边形需要合并的情况下采用我的方法。

func Merge_Map_Shadows() -> void:
# Get all "shadow" polygons and store them in an array,
# then apply xform transform in order to retain it's position and rotation.
# After that, delete the original shadow.
if Map_Shadows.get_child_count() > 0:
    var _detected_shadows: Array = []
    for _shadow in Map_Shadows.get_children():
        var _transformed_polygon: PoolVector2Array = []
        for _vector in _shadow.polygon: _transformed_polygon.append(_shadow.transform.xform(_vector))
        _detected_shadows.append(_transformed_polygon)
        _shadow.call_deferred("queue_free")
    
    # Create the …
Run Code Online (Sandbox Code Playgroud)

geometry polygon gdscript godot

5
推荐指数
1
解决办法
2232
查看次数

如何在Godot中实现触摸滚动

我正在为移动设备制作一个用户界面,我需要一种垂直滚动我的项目的方法,我设法使用滚动容器来做到这一点。但问题是它占用空间,并且使用滑动手势无法工作,所以我的计划是使滚动条与屏幕大小相同并使其不可见。那么我该如何以及在哪里调整这些设置呢?或者有没有办法实现滑动手势滚动。

scroll scrollbar gdscript godot

4
推荐指数
1
解决办法
4015
查看次数

如何在 Godot 中更改精灵的饱和度和叠加

我一直计划通过改变饱和度和色调值将我的精灵更改为更深一点的颜色。但这样做似乎非常棘手,因为 Godot 模块只讨论通过modulate如下选项更改精灵的颜色:

node.modulate= Color(0, 50, 2,0.5)
Run Code Online (Sandbox Code Playgroud)

这样做是将整个精灵更改为新颜色,而我只想将现有颜色变成更深一点的颜色,就像我们在 Photoshop 中使用“曲线”或“色阶”所做的那样 - 但不是那么精致。任何基本的方法也会有帮助。

目前,我只能进行“颜色叠加”而不改变不透明度。 只要不改变整个精灵的不透明度而仅改变叠加颜色,任何添加具有不透明度变化的颜色叠加的方法都会有所帮助。

我正在开发一个带有导入 PNG Sprites 的 2D 游戏。如果需要更多信息,我很乐意提供。

附加信息 -

我的精灵是什么样子

在此输入图像描述

我想通过这样的代码两次使其变暗 -

在此输入图像描述 在此输入图像描述

通过执行 node.modulate= Color(0.0, 0.0, 0.0,1) ,它会变成这样 - 在此输入图像描述

我之所以避免手动执行此操作,是因为我有太多的精灵,并且为所有精灵执行此操作会很乏味。

colors sprite gdscript godot

4
推荐指数
1
解决办法
6279
查看次数

如何在Godot GDscript中获取骨骼的全局世界坐标

我正在用 GDscript 用 Godot 编写一个程序,旨在改变骨架中多个骨骼的位置。骨骼将按照我希望骨骼移动到的点减去骨骼当前位置计算出的值进行平移。translateValue = endPoint - currentPoint但是,所有值都必须位于世界坐标或全局位置中,代码才能正常工作。Godot 有多种方法来检索骨骼变换以访问位置,例如:skeleton.get_bone_pose() , skeleton.get_bone_global_pose , skeleton.get_bone_rest。我尝试使用skeleton.get_bone_global_pose ,但它没有给出全局位置,并且似乎仍然与某些东西相关。还有一个to_global()方法,但我不完全确定它的作用。有人可以解释这些方法之间的差异以及如何获得全球地位吗?谢谢!

gdscript godot

4
推荐指数
1
解决办法
2833
查看次数

如何检测 Godot 中 Area2D 节点上的鼠标输入(视口和 shape_idx 错误)?

在测试了其他一些引擎之后,我在游戏开发学习过程中选择了 Godot,并且非常欣赏 GDScript 的简洁性、节点/继承结构以及信号覆盖观察者事件的方式。我一直通过各种教程和阅读文档来积累知识。

不知何故,我正在努力解决检测精灵上的鼠标点击这一非常基本的任务。(嗯,在精灵的父节点上,要么是 Node2D,要么是 Area2D。)

我的过程是这样的:

  1. 创建一个包含 Sprite 子节点和 CollisionShape2D 子节点的 Area2D 节点(称为徽标)
  2. 将纹理分配给 Sprite 节点,并更改 CollisionShape2D 节点的 x 和 y 范围值以匹配 Sprite 纹理的大小
  3. 将 _on_logo_input_event(viewport, event, shape_idx) 信号连接到 Area2D 节点的脚本(称为 logo.gd)
  4. 使用以下代码:
func _on_logo_input_event(viewport, event, shape_idx):
    if (event is InputEventMouseButton && event.pressed):
        print("Logo clicked")
Run Code Online (Sandbox Code Playgroud)

当我运行游戏时,单击后我没有得到任何输出,并看到以下错误:

The argument 'viewport' is never used in the function '_on_logo_input_event'. If this is intended, prefix it with an underscore: '_viewport'

The argument 'shape_idx' is never used in the function '_on_logo_input_event'. If this …

game-development gdscript godot

4
推荐指数
1
解决办法
9683
查看次数

如何在 Godot (3D) 中设置和获取对象的位置

我有一个问题 - 如何获取和设置 Godot 中对象的位置?我找不到任何教程,所以我需要帮助。

position gdscript godot

4
推荐指数
1
解决办法
2万
查看次数