Godot游戏练习01-第1节-创建玩家场景

12 阅读2分钟

昨天我打开了引擎, 创建了一个项目, 显示了一个方块(Godot图标), 一个很好的开始, 今天继续推进

挂载脚本

在main场景上挂载一个脚本main.gd, 覆盖_ready函数, 输出"hello world", 这是编程之始

在我们创建节点的时候, 会发现Godot中有非常多的节点类型,对于不熟悉的节点, 可以根据名字了解它大概是个啥, 具体的细节可以到官方文档查看细节内容

官方文档

顺带一提, 官方文档提供中文版本, 并且具有详细的教学甚至教程章节, 推荐学习

以下是官方文档地址

我最喜欢的就是所有类参考文档这一页, 直接包含所有内容, 想知道什么都可以搜索点击进入查看, 是一本电子Godot字典

这里面保罗万象, 左侧也按照类型给出了树状的组织目录

可移动的玩家场景

玩家场景res://entities/player/player.tscn

res://entities/player/player.tscn
└── Player (CharacterBody2D)
    ├── Sprite2D (Sprite2D)
    └── CollisionShape2D (CollisionShape2D)

Sprite2D中添加Godot商标作为占位资源, CollisionShape2D添加一个圆形碰撞形状

player.tscn的根节点Player上绑定res://entities/player/player.gd脚本

在Project - Project Settings - Input Map中添加输入映射

  • move_up: W, \uparrow
  • move_down: S, \downarrow
  • move_left: A, \leftarrow
  • move_right: D, \rightarrow

player.gd中, 监听输入, 转换为方向向量, 让Player向方向向量按一定速度移动

func _process(delta: float) -> void:
	var input: Vector2 = Input.get_vector("move_left", "move_right", "move_up", "move_down")
	velocity = input * move_speed
	move_and_slide()

看看效果吧

虽然现在还很简单, 但我们拥有一个可移动的玩家了!

在我们的主场景main.tscn中实例化一个player.tscn场景, 并把它移动到视野中间, 运行起来, 按下移动按钮