变量的作用域
全局变量,局部变量,导出变量(可以在检查器当中快速查看)
为玩家添加移动动画
现在游戏的玩家还只是在滑行,我们需要再添加玩家每个方向上的移动效果
删除原先的Item节点,创建一个动画精灵节点
如何显示动画帧
创建一个动画帧
左侧是动画列表,右侧是每个动画的具体内容
将精灵表拆分成单独的动画
将资源添加进来
添加你需要的动画
移动速率:每秒播放多少帧
同理可以添加新的动画,注意fps要保持一致
动画有了,但是什么时候播放他们呢?
使用代码来控制其执行流程,也就是什么时候执行,执行什么的问题
引用其他的节点
现在动画位于动画节点里面,人物如果想要访问该节点资源的话,需要使用$符号来引用该节点
记得将玩家添加到游戏场景当中:
将game_scene场景作为主场景运行,设置错了可以去项目配置里面修改
但是运行之后,玩家虽然能正常移动了,但是玩家一走就停不下来了
解决方案:判断速度是否为0,为0就不走了
人物滑行问题的解决
新的问题:单独的前、后、左、右都没问题了,但是如果2个方向同时按下的话,人物会滑行
这是因为if语句2个条件都成立,2个动画会同时被播放
改进:使用if..elif...else语句
改进后的代码:
func _process(delta: float) -> void:var move_vector:Vector2=Input.get_vector("move_left","move_right","move_up","move_down")velocity = move_vector * move_speedif 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,今天的你就到此为止吧,明天还要接着🐺啊!🎈🎈🧡