Godot学习记录(二)

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窗口置顶,显示-窗口-置顶,方便调整

画好后编组,锁定,放止不小心改动 

### Godot 游戏引擎学习笔记与教程 Godot 是一款完全免费且开源的游戏引擎,其设计目标是提供一种灵活的方式来构建游戏项目[^1]。它允许开发者通过可视化的界面和脚本来控制游戏逻辑,适合初学者和有经验的开发者。 #### 开始使用 Godot 的准备工作 在开始之前,了解 Godot 的基本概念非常重要。例如,在创建第一个场景时,可以通过添加节点来扩展功能并设置它们之间的交互关系[^4]。这些基础操作对于后续更复杂的功能实现至关重要。 #### 添加视觉元素——视差背景 为了增强用户体验,可以在游戏中加入动态效果,比如视差滚动背景。这种技术可以让不同层以不同的速度移动,从而营造出三维空间感[^2]。具体做法包括导入图片资源并对齐尺寸适应屏幕大小;还可以进一步结合前面提到的技术要点,向画面中引入互动组件如可点击按钮等。 #### 实现角色动作 —— 2D 横版移动 当涉及到游戏角色的动作表现时,则需深入研究物理模拟方面知识。例如利用刚体对象作为支撑面,并编写相应代码使得虚拟人物能够在水平方向自由行走同时还具备垂直跃起能力[^3]。这里需要注意的是每次迭代都应保持简洁明了以便于后期维护改进。 以下是简单的玩家控制器脚本示例用于演示基本运动机制: ```gdscript extends KinematicBody2D var speed = 200 var gravity = 800 var jump_strength = -1200 var velocity = Vector2.ZERO func _physics_process(delta): var direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left") velocity.x = direction * speed if is_on_floor() and Input.is_action_just_pressed("ui_jump"): velocity.y = jump_strength velocity.y += gravity * delta velocity = move_and_slide(velocity, Vector2.UP) ``` 此段GDScript实现了基于键盘输入检测的角色左右平移及跳跃行为。 ### 总结 以上内容涵盖了从环境搭建到核心玩法雏形建立的过程概述。随着不断实践探索,相信你会逐渐掌握更多高级特性!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值