欢迎光临散文网 会员登陆 & 注册

十分钟制作横版动作游戏|Godot 4 教程《勇者传说》#0

2023-05-27 10:43 作者:瓦格良  | 我要投稿

《勇者传说 #0》教程笔记

设置窗口:

像素风设置:

1、项目设置 =》打开高级设置 =》 显示 =》 窗口



场景:

  1. 新建2D场景并重命名为World
  2. 添加一个子节点TileMap
  3. 在TileMap右侧检查器中Tile Set属性中选择新建TileSet
  4. 点击TileSet,展开Physics Layer,点击添加元素
  5. 切换到底部的TileSet面板
  6. 把事先准备好的素材图片拖入图块,弹窗选择否(是否在不透明纹理区创建)
  7. 在基础图块中选择自己想要使用的图块
  8. 切换到绘制选项,选择物理层0,对图块涂抹,即可设置好碰撞区域


9.切换到下方的TileMap面板,选择图块进行绘制

  1. 左键绘制
  2. 右键删除
  3. 安装shift是画直线
  4. 按住crtl+shift是画矩形

10.保存当前场景

11.选择其他节点新建场景

12.新建节点CharacterBody2D,改名为Player,添加子节点Sprite2D(用来显示图像)

13.将事先准备好的玩家动画图片拖入Sprite2D,图片放大后默认比较模糊

14.在项目=》项目设置=》渲染=》纹理=》默认纹理过滤 改为 Nearest


15.在右侧Region中勾选Enable,点击编辑区域,吸附模式修改为栅格吸附,步长设置为56*56像素,圈起第一行的6帧动画

16.在右侧Animation中,修改Hframes(水平帧数)为6


17.调整角色最下中点到原点

18.在根节点下添加CollisionShape2D节点,定义碰撞形状,在右侧Shape属性中新建RectangleSharp2D,并调整大概位置覆盖角色主体

19.添加AnimationPlayer节点,用来定义动画,新建动画命名为idle


20.设置总长度为0.6秒,打开循环

21.切换到Sprite2D节点,点击右侧Region的Rect属性右侧的钥匙符号添加关键帧,点击Hframes添加关键帧,Frame添加关键帧,因为有6帧动画,所以要添加6个Frame关键帧


22.按照上面的做法再添加running动画


23.再制作jump动画


24.保存当前场景

25.在Player场景的根节点添加脚本控制角色的行为


26.编写脚本

extends CharacterBody2D


# 获取引擎给的重力加速度
var gravty := ProjectSettings.get("physics/2d/default_gravity") as float


func _physics_process(delta: float) -> void:
	velocity.y += gravty * delta
	move_and_slide()

27.在World场景的根节点实例化角色



28. 在项目=》项目设置=》输入映射添加3个按键

  1. move_left(A)
  2. move_right(D)
  3. jump(空格)


29. 完整脚本

extends CharacterBody2D
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@onready var sprite_2d: Sprite2D = $Sprite2D




const RUN_SPEED := 200.0
# 是负数的原因是因为在2D空间中y轴向上为负
const JUMP_VELOCITY := -300.0
# 获取引擎给的重力加速度
var gravty := ProjectSettings.get("physics/2d/default_gravity") as float


# 每个物理帧调用一次
func _physics_process(delta: float) -> void:
	# 获取按键输入
	var direction :=  Input.get_axis("move_left","move_right")
	# 修改速度向量
	velocity.x = direction * RUN_SPEED
	velocity.y += gravty * delta
	
	# 如果在地板上并且按下了jump键,那么就修改角色y坐标变为跳跃值
	if is_on_floor() and Input.is_action_just_pressed("jump"):
		velocity.y = JUMP_VELOCITY
	
	# 如果在地板上,没有移动则播放idle动画,有移动则播放running动画,如果不在地板上则播放jump动画
	if is_on_floor():
		if is_zero_approx(direction):
			animation_player.play("idle")
		else:
			animation_player.play("running")
	else:
		animation_player.play("jump")
	
	# 如果在移动,并且是向左移动,那么将角色水平翻转
	if not is_zero_approx(direction):
		sprite_2d.flip_h = direction < 0
	move_and_slide()


十分钟制作横版动作游戏|Godot 4 教程《勇者传说》#0的评论 (共 条)

分享到微博请遵守国家法律