千里之行,始于足下
文章目录
零、 笔记
创建可路径导航、动态避障的小鸡
一、认识导航节点
为了实现小鸡路径导航、动态避障的效果,要用到三种导航节点:
(一)智能驾驶汽车
装小鸡的智能驾驶汽车 -> NavigationAgent2D
(二)人工智能
汽车注册使用的人工智能,用于规划路径 -> NavigationServer2D
(三) 场地
导航区域,确定汽车行驶范围 -> NavigationRegion2D
二、创建小鸡
(一)创建小鸡动画
第一步,创建新场景,以 CharectorBody2D 作为场景根节点,改名为:小鸡;

第二步,分别添加 AnimationSprite2D 动画节点和 CollisionShape2D 碰撞节点作为子节点;

第三步,选中 AnimationSprite2D 动画节点,在检查器中新建 SpriteFrames 动画帧;

第四步,在编辑器 SpriteFrames 底栏中使用精灵表创建动画帧;

在文件系统 res://资产/Sprout Lands - Sprites - Basic pack/Characters 路径下打开 Free Chicken Sprites.png 文件夹;

第五步,依图中顺序点击添加,创建动画(Tips:Ctrl + 鼠标滚轮 可以调整视图大小) ;

第六步,设置为自动播放,调节帧速,并命名为 空闲 ;

第七步,同上,设置如图,创建行走动画;

(二)添加碰撞体
第一步,选中 CollisionShape2D 节点,并在检查器中新建 圆形碰撞 ;

第二步,调整 圆形碰撞 至比小鸡略小;

第三步,新建【 res://场景/NPC/小鸡 】文件夹,并保存 小鸡 文件;


第四步,打开 项目设置 ,为2D物理层命名;

第五步,分别设置小鸡和玩家的物理层;

三、让小鸡动起来
(一)行走/空闲状态切换
在小鸡真正动起来前,给它一个计时器 Timer ,告诉它什么时候走,什么时候停:

第一步,给小鸡一个计时器 Timer ;

第二步,为 小鸡 节点附加脚本;
extends CharacterBody2D
@export var 等待时间: float = 5.0
var 当前状态: StringName = "空闲"
@onready var animated_sprite_2d: AnimatedSprite2D = $AnimatedSprite2D
@onready var timer: Timer = $Timer
func _ready():
# 配置定时器
timer.timeout.connect(切换状态)
func 切换状态():
# 切换状态
if 当前状态 == "空闲":
当前状态 = "行走"
animated_sprite_2d.play("行走")
timer.start(等待时间)# 启动计时器
else:
当前状态 = "空闲"
animated_sprite_2d.play(<

最低0.47元/天 解锁文章
1万+





