godot英文文档:Godot Docs – 4.2 branch — Godot Engine (stable) documentation in English
一、gdscript
设置:编辑器->编辑器设置->文本编辑器,勾选类型提示,这样可提高运行效率
没设置之前
@onready var char_blue_1 = $CharBlue1
设置之后
@onready var char_blue_1:Sprite2D = $CharBlue1
Tips: 按住Ctrl再点击函数,可跳转到godot内置的函数文档。
1.变量
(1)var varible_name = value(声明+赋值,此时变量类型可变)
var varible_name: int(声明整型变量,类型不可变)
var varible_name(声明变量,没有赋值,此时访问该变量,值为null)
var varible_name := 1(自动判断类型,类型同样不可变)
var varible_name :=1 :
set(v):
if v>0:
varible_name = v
(属性修饰符,类似python中@property)
数组:
var weapons = [“123”,“123”]
weapons.size()#长度
weapons.append("456") #在尾部放一个元素
weapons.pop_back() #从最后面取元素
weapons.pop_front() #从前面元素
对象:
var hero = {
"hp": 20,
"mp": 10,
}
hero["hp"] #拿出属性
hero["hp"] -= 1
for tmp in hero:
print(tmp, hero[tmp]) #输出 属性,属性值
2.类
在文件头部声明类名称即可
eg:
class_name MyPlayer
var name := "class"
3.循环
for i in 5:
pass
(循环执行5次,i的数值从0开始增)
4.函数
func _ready() -> void:
pass
(开始时调用,类似unity中private void start(){})
二、场景相机
顺便一提,画地图时,按住Ctrl键之后点击已画图块,就可以使用点击的图块,按Ctrl后选中一列图块就可以用这一列图块画,Ctrl+shift就可以画一个矩形区域
1.在Player的节点下建一个Camera2D
相机死区:Drag里面调整,相机范围:limits里面调整,editor里勾选draw,就能可视化调整
position smoothing为位置平滑,可让相机移动更丝滑,从标尺上拖下参考线,可以量场景边界,然后填在limits里面,为防止玩家掉出场景,可在边框处加围栏或者用代码限制。如果你嫌麻烦,下面有一些参考代码,可以自动设置限制。
Limite里面有个smooth,勾选这个可以让地图在碰到了边界时的减速也是平滑的
extends Node2D
@onready var tile_map: TileMap = $TileMap
@onready var camera_2d: Camera2D = $Node2D/Camera2D
func _ready() -> void:
var used := tile_map.get_used_rect()
var tile_size := tile_map.tile_set.tile_size
camera_2d.limit_top = used.position.y * tile_size.y
camera_2d.limit_left = used.position.x * tile_size.x
camera_2d.limit_right = used.end.x * tile_size.x
camera_2d.limit_bottom = used.end.y * tile_size.y
#放止一开始player在限制区域外导致有一个奇怪的运镜
camera_2d.reset_smoothing()
三、画地图
按Ctrl键在TileSet中拖动即可选中图块,右键可删除,然后新建terrain set,选match conners,按照角落来匹配。绘画时,在填充中选择属性-terrain-terrain set 0-填充,之后绘制颜色。匹配规则:能拼到一起的颜色相同。画好后长这样:
tips:对于有些图块,比如较高的蘑菇,可以在TileSet中扩展一个图块,之后设置纹理原点,这样可以让绘制地图更轻松,设置纹理原点时,可使用绘制选项批量绘制。
蘑菇太多?只需到属性-》概率这儿更改
地图有许多层,可在 layers中增加,然后在绘制界面上方的下拉选框中挑选图层画
四、视差背景
(1)添加parallaxBackground并在其下添加parallaxLayer,可按喜好更名,我添加了一个天空层,远处的树林层,和近处的树叶层。要添加图片只需在parallaxLayer中将图片作为子节点添加。
motion中的scale为相对移动速度,数值越小,越适用于远景。scale中默认X和Y是一样的,若想不一样,就点击右侧链条,就可分别设置。游戏水平距离通常长,此时背景图片可能不够用,会穿帮,此时可在mirrror中将x设为图片宽度即可(384px)。之后添加山脉和树木,使用region选取部分,Ctrl+D可以复制节点
注:有时候场景衔接处会出现白线,,这是因为godot中region属性与渲染属性的冲突,可设置
项目-项目设置-2D 渲染自动吸附或者使用单独的图片,或者把图片放置的稍微重叠一些,都可解决问题。
设置,置顶可以使运行的debug窗口置顶,显示-窗口-置顶,方便调整
画好后编组,锁定,放止不小心改动