Godot开发2D冒险游戏——第二节:主角光环整起来!

变量的作用域

全局变量,局部变量,导出变量(可以在检查器当中快速查看)

为玩家添加移动动画

现在游戏的玩家还只是在滑行,我们需要再添加玩家每个方向上的移动效果

删除原先的Item节点,创建一个动画精灵节点

如何显示动画帧

创建一个动画帧

左侧是动画列表,右侧是每个动画的具体内容

将精灵表拆分成单独的动画

将资源添加进来

添加你需要的动画

移动速率:每秒播放多少帧

同理可以添加新的动画,注意fps要保持一致

动画有了,但是什么时候播放他们呢?

使用代码来控制其执行流程,也就是什么时候执行,执行什么的问题

引用其他的节点

现在动画位于动画节点里面,人物如果想要访问该节点资源的话,需要使用$符号来引用该节点

记得将玩家添加到游戏场景当中:

将game_scene场景作为主场景运行,设置错了可以去项目配置里面修改

但是运行之后,玩家虽然能正常移动了,但是玩家一走就停不下来了

解决方案:判断速度是否为0,为0就不走了

人物滑行问题的解决

新的问题:单独的前、后、左、右都没问题了,但是如果2个方向同时按下的话,人物会滑行

这是因为if语句2个条件都成立,2个动画会同时被播放

改进:使用if..elif...else语句

改进后的代码:

python 复制代码
func _process(delta: float) -> void:
	
	var move_vector:Vector2=Input.get_vector("move_left","move_right","move_up","move_down")
	
	velocity = move_vector * move_speed
	
	if velocity.x > 0:
		$AnimatedSprite2D.play("move_right")
	
	elif velocity.x < 0:
		$AnimatedSprite2D.play("move_left")
	
	elif velocity.y < 0:
		$AnimatedSprite2D.play("move_up")
		
	elif velocity.y > 0:
		$AnimatedSprite2D.play("move_down")
	
	else:
		$AnimatedSprite2D.stop()
		
	move_and_slide()

这样我们的玩家就比较完美地移动起来了:

2d3

okok,今天的你就到此为止吧,明天还要接着🐺啊!🎈🎈🧡

相关推荐
寂寞的船21 小时前
【Unity知识速递】第13期 Unity 内存泄漏排查实战:从 Memory Profiler 到 Lua 引用泄漏的生产级全链路诊断
unity·junit·c#·游戏引擎·lua
寂寞的船2 天前
【Unity Bug挑战】第12期 Awaitable 二次 await 死锁之谜 —— 为什么同一个异步操作等两次就卡死?
unity·c#·游戏引擎·bug
探求虚无3 天前
用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩
人工智能·unity·游戏引擎
寂寞的船5 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
Martina_03215 天前
AI生成3D场景的霓虹灯一开就糊成光团?用6步检查Emissive、Bloom与曝光
人工智能·3d·ai·自然语言处理·游戏引擎·材质·贴图
又过二十7 天前
结合Godot八向图实现网页角色设计器测试
ai·aigc·godot·game·qwen-image·游戏素材
寂寞的船7 天前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互
淡海水8 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
寂寞的船8 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug
tealcwu11 天前
【Unity高级】Unity URP:构建同时支持 2D 与 3D 场景的项目完全指南
3d·unity·游戏引擎