Godot平台游戏如何取消玩家与默认边界的碰撞限制?
解决玩家被屏幕边界阻挡的问题
你的问题根源在于代码末尾的两行位置限制逻辑,它们强制将玩家位置锁定在屏幕范围内,这就是运行时出现蓝色边界并阻挡玩家移动的原因。
解决方案
直接删除以下两行代码:
position.x = clamp(position.x, 0, screen_size.x) position.y = clamp(position.y, 0, screen_size.y)
原因说明
clamp函数会把玩家的X、Y坐标限制在0到屏幕宽/高的区间内,相当于手动给玩家添加了屏幕边界碰撞。移除这两行后,玩家就能自由移动到屏幕外,配合你已经设置好的相机跟随系统,即可实现无屏幕边界限制的平台跳跃玩法。
修改后的完整代码
extends KinematicBody2D const GRAVITY = 600 const WALK_SPEED = 200 const JUMP_FORCE = 350 var velocity = Vector2() var screen_size func _ready(): screen_size = get_viewport_rect().size func _physics_process(delta): velocity.y += delta * GRAVITY if Input.is_action_pressed("ui_left"): velocity.x = -WALK_SPEED elif Input.is_action_pressed("ui_right"): velocity.x = WALK_SPEED else: # velocity.x = 0 # smoothen the stop velocity.x = lerp(velocity.x, 0, 0.1) if Input.is_action_pressed("ui_up") and is_on_floor(): velocity.y = -JUMP_FORCE velocity = move_and_slide(velocity, Vector2.UP)
内容的提问来源于stack exchange,提问作者T14Seara
相关产品推荐
相关产品推荐

