Godot学习记录-1:基础操作
想在2025年做游戏?用Godot做出你的第一个2D游戏吧:游戏场景
1,添加节点


2,添加纹理

选中刚创建的sprite2D,右侧会显示【检查器】,里面有一个Texture(纹理)选项;
在文件系统中找到对应文件,如res→AssetBundle→Sprites→Background.png文件,拖动此文件到【Texture】框中。
⌈像素图片糊怎么解决?⌋

左上角【项目】→【项目设置】→【渲染】→【纹理】→【默认纹理过滤】选择【Nearest】
(【渲染】是大标题的渲染不是【国际】下面的渲染!)
3,添加摄像机

godot默认只会显示蓝框的内容,所以这个场景直接运行的结果是⬇

要显示场景,首先需要添加摄像机camera2D节点

粉色方框即为camera2D的显示内容

通过修改检查器中Zoom的数值来修改摄像机的渲染范围

※tip1:可以通过给节点上锁的方式防止误点击某节点(也可CTRL+L)

※tip2:玩家节点需要单独建一个场景,然后再在环境场景中调用玩家场景,godot允许场景相互调用
4,添加玩家场景
通过点击【+】号添加新场景,并创建character2D节点

添加玩家图片:首先搜索并创建AnimatedSprite2D类型节点,AnimatedSprite2D可以设置动画;并在Animation→Sprite Frames新建SpriteFrames

点击SpriteFrames会打开动画面板

点击面板上方的网格按钮(从精灵表中添加帧)添加图片

精灵表SpriteSheet将每一帧的图像放在同一张图里,就像表格一样。需要按照对应尺寸进行设置,godot才能正确切割每一帧的图像

切割好后,选择需要的图片帧,点击添加

可以点击播放进行预览,也可以通过设置速度改变帧率,点击左侧的【加载后自动播放】按钮,就可以在游戏开始时默认播放此动画/状态

回到主场景,点击链接按钮,再跳出的对话框中选择玩家场景即可

吐槽:这动画添加设置简直比unity简单太多……
5,创建代码脚本
选择玩家场景树,选中Player,点击设置脚本按钮,在弹出的对话框中设置一下模板,点击创建。

上面的设置脚本按钮同时可以表示取消挂载代码
6,碰撞
用StaticBody2D构造空气墙。
StaticBody2D需要CollisionShape,CollisionShape规定碰撞形状,和unity碰撞体差不多。
给CollisionShape2D的shape设置为WorldBoundaryShape2D,无限延伸的墙
※tip:godot中越靠下的节点优先级越高。
7,物理节点
Area2D:2D 空间中的一个区域,能够检测到其他物理节点是否碰撞了它。
area2D没有velocity属性
8,角色覆盖
不同优先级的物体会发生覆盖,可以在【根节点】中勾选Ordering的Y Sort Enabled,也就是按y轴的位置显示前后关系。

9,信号signal
查看area2D能触发的信号:选中area2D节点,点击右侧节点,选择面板下的【信号】栏,即可查看area2D能触发的所有信号。

以碰撞为例,选择body_entered信号双击,会跳出一个对话框,设置好后点击连接

则在area2D上挂在的script脚本会自动创建func _on_body_entered函数。

每次该信号被触发的时候,就会自动执行这个函数。
10,子弹(Player携带物)
首先为子弹新建场景,添加节点,节点选择area2D,因为涉及碰撞。
※question:关于碰撞,到底是主动一方还是被动一方?
Timer:可以以节点的形式加入到场景中,倒计时。
one shot:只进行一次倒计时。
auto start:游戏开始时倒计时。
timeout信号:每次倒计时结束时触发。

11,场景作为类型
通过在玩家代码里创建场景变量,来获取子弹场景
var bullet_scene :PackedScene :以文件形式保存在项目里的场景
12,area entered
area碰撞检测

可以直接把animatedsprite2D拖到代码里

13,UI
破案了,这个框指的是canvaslayer的渲染范围

14,窗口
设置跟随窗口大小缩放内容
viewport:游戏物体会强行吸附到每一个像素上(像素风游戏强推)
canvasitem:无上面的特性

设置导出大小

15,导出
浙公网安备 33010602011771号