为何CharacterBody2D节点位置更新但角色不移动?
解决CharacterBody2D实际移动但视觉不动的问题
从你的日志能看到角色的position.x确实在持续变化,说明移动逻辑是正常的。问题出在Camera2D的节点层级上——你把Camera2D设为CharacterBody2D的子节点了,当CharacterBody2D移动时,Camera会跟着它一起移动,屏幕视角始终以角色为中心,所以视觉上看起来角色没动。
解决方案
- 调整节点层级:在场景编辑器里,把Camera2D从CharacterBody2D的子节点拖出来,放到场景根节点下,和CharacterBody2D同级。这样角色移动时,Camera不会跟着走,就能看到角色在屏幕里移动了。
- 如果需要相机跟随角色:给根节点下的Camera2D添加如下脚本,实现基础跟随(也可以用Godot内置的平滑跟随功能):
extends Camera2D @onready var player = $CharacterBody2D # 替换成你的角色节点实际名称 func _physics_process(delta): position = player.position
快速验证
你可以先临时禁用Camera2D(点击节点旁的眼睛图标),运行场景后如果能看到角色移动,就完全确认是Camera的问题了。
内容的提问来源于stack exchange,提问作者Allan Juan
相关产品推荐
相关产品推荐

