You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:06:32