返回

一步步掌握Godot 3:构建封闭的游戏世界

见解分享

构建封闭的游戏世界:Godot 3 引擎入门

在 Godot 3 游戏引擎的上一篇文章中,我们探讨了如何移动玩家和使用瓦片集创建游戏地图。在本篇教程中,我们将更进一步,学习如何为地图添加碰撞体,从而构建一个封闭且身临其境的游戏世界。

为何需要碰撞体?

碰撞体是用于定义游戏对象形状的无形对象。它们决定了对象与其他对象交互的方式,例如玩家角色是否能够移动穿过障碍物或敌人是否能够穿透墙体。

添加碰撞体:分步指南

  1. 导入瓦片集:

    • 将瓦片集图像文件拖放到场景编辑器中。
    • 右键单击瓦片集文件并选择“创建静态瓦片图层”。
  2. 创建碰撞形状:

    • 在场景树中选择静态瓦片图层。
    • 在“检查器”面板中,转到“碰撞”选项卡。
    • 点击“添加碰撞形状”按钮。
    • 根据瓦片集的形状选择碰撞形状类型(例如,凸多边形、矩形或圆形)。
  3. 定义碰撞形状:

    • 对于凸多边形,单击并拖动以绘制形状的边界。
    • 对于矩形,输入矩形的宽度和高度。
    • 对于圆形,输入圆形的半径。
  4. 设置碰撞层:

    • 在“检查器”面板的“碰撞”选项卡中,选择“碰撞层”。
    • 为碰撞体分配一个层,以控制其与其他对象的交互方式。
  5. 保存更改:

    • 点击“保存”按钮以保存对场景的更改。

代码示例

以下代码示例演示了如何在 Godot 3 中使用代码添加碰撞体:

# 导入瓦片集并创建静态瓦片图层
var tile_map = load("res://my_tile_map.tres")
add_child(tile_map)
var tile_layer = tile_map.get_child(0)

# 创建凸多边形碰撞形状
var polygon_shape = PolygonShape2D.new()
polygon_shape.points = [
    Vector2(0, 0),
    Vector2(16, 0),
    Vector2(16, 16),
    Vector2(0, 16),
]

# 为静态瓦片图层添加碰撞体
var collision_object = CollisionObject2D.new()
collision_object.collision_shape = polygon_shape
tile_layer.add_child(collision_object)

# 设置碰撞层
collision_object.collision_layer = 1

结语

通过在 Godot 3 中为地图添加碰撞体,我们创建了一个封闭且交互性的游戏世界。现在,玩家可以与环境交互,例如通过障碍物和避免陷阱。了解碰撞体是构建身临其境且引人入胜的游戏世界的重要一步。在未来的文章中,我们将继续探讨 Godot 3 的其他强大功能,以帮助您制作令人惊叹的游戏。