godot4制作2D游戏07———游戏问题修改(HurtBox融进动画、修改Plant的HitBox范围 、修改任务方向选择方法)
将HurtBox放进Player的Sprite下 将HurtBox放进Player的Sprite下 配合攻击动画,添加HurtBox的关键帧,在攻击时修改HurtBox的位置 将Plant下的HitBox扩大 右键图形选择那里选择make unique,然后将其覆盖整个草丛图片 修改Player中Direction部分123456789101112131415func SetDirection() -> bool: if direction == Vector2.ZERO: return false # 将之前的x和y的判断修改成了角度判断,并且添加了当前方向的倾向 var direction_id: int = int(round((direction + cardinal_direction * 0.1).angle() / TAU * DIR_ARR.size())) var new_dir = DIR_ARR[direction_id] print(direction_id) if cardinal_direction ==...
godot4制作2D游戏06———添加攻击功能
创建新文件夹 创建一个GeneralNodes文件夹来放置通用文件 在下面创建一个HitBox(被伤害的节点) 创建一个Area2D类型的场景 取消Monitoring选项,不会主动检测碰撞 保留Monitorable选项,表示可以被检测 Collision选择第九层 创建一个hit_box的脚本 12345678910111213class_name HitBox extends Area2Dsignal Damaged( damage: int)func _ready() -> void: pass func _process(delta: float) -> void: passfunc TakeDamage( damage: int) -> void: print("take damage", ...
godot4制作2D游戏05———添加攻击动画
添加新素材 从素材网站上 下载下来新的Player素材 AttackSprite01.png 新增attack的三个特效 新增attack的状态机并添加脚本 123456789101112131415161718192021222324252627282930313233343536373839404142434445class_name StateAttack extends State @export_range(1, 20, 0.5) var decelebrate_speed : float = 5.0@export var audio_stream: AudioStreamvar attacking: bool = false@onready var walk: StateWalk = $"../Walk"@onready var idle: StateIdle = $"../Idle"@onready var animation_player: AnimationPlayer =...
godot4制作2D游戏04———创建地图
创建新场景 创建一个新的节点–TileMapLayer类型 从网站下载 grass-01 素材 创建新tileset,并设置宽高为32px 在ordering中将zIndex设置为-1,设置为背景 将图片拖入TileSet中,在下方控制台中 在TileMapLayer节点中新增一个PhysicsLayer,collision为5(表示在第五层) 在TileSet中Paint选项中的PhysicsLayer中绘制所需的物理层图案 将Player的CollisionLayer的Mask层选中为5,表示与第五层的物理层产生碰撞 创建地形Terrain Set,添加一个Terrain 在用户节点下添加一个Camera2D节点 将Player的Motion Mode改为float,角度改为10 修改Player节点脚本中的_process代码 12345678func _process(_delta: float) -> void:#direction.x = Input.get_action_strength("right") -...
godot4制作2D游戏03———添加人物状态机
添加状态机接口 创建一个script,名称为state.gd 123456789101112131415161718192021class_name State extends Nodestatic var player: Playerfunc _ready() -> void: passfunc Enter() -> void: pass func Exit() -> void: pass func Process(delta: float) -> State: return nullfunc PhysicsProcess(delta: float) -> State: return nullfunc HandleInput(event: InputEvent) -> State: return null 这个接口是各个状态机方法属性的定义 为Player添加StateMachine节点 在Player下创建一个StateMachine的节点 在StateMachine下新添加两个子节点Idle和Walk 创建...
godot4制作2D游戏02———添加人物移动动画
添加人物移动动画创建动画 动画一般有两种节点,一种为 AnimationPlayer, 另一种是 AnimatableSprite2D AnimationPlayer 功能更强大 AnimatableSprite2D 使用简但功能少 在Player下创建一个AnimationPlayer节点 在下方会出现一个工作台,创建新动画 选中Sprite2D节点,然后在Animation属性中找到frame,点击钥匙加号 然后在下方创建几个动画,idle和walk各三个 在Player.gd脚本中添加一些代码 1234567var move_speed: float = 100.0var direction: Vector2 = Vector2.ZEROvar cardinal_direction: Vector2 = Vector2.DOWNvar state: String = "idle"@onready var animation_player: AnimationPlayer = $AnimationPlayer@onready var...
godot4制作2D游戏01———创建可移动人物
创建人物 创建2D场景,添加子节点CharacterBody2D类型 为CharacterBody2D添加一个碰撞类型,先选择圆形即可 从网站下载所需图片 https://michaelgames.itch.io/2d-action-adventure-rpg-assets 将文件导入项目,并创建Sprite,将Animtion的Hframes改为21 该项目为像素风格,所以需要修改一些项目参数 project -> project setting -> general -> display -> window -> window width 480 height 270 project -> project setting -> general -> display -> window -> stretch viewpoint(很适合像素风) project -> project setting -> general -> display -> window ->...