当启用相机阻尼时,玩家看起来像是传送而不是平滑移动 GODOT

问题描述 投票:0回答:1

使用阻尼移动相机时,相机或其他不移动的物体看起来不像瞬移。当相机静止时,玩家看起来不像瞬移。当摄像机跟随玩家而没有阻尼时,玩家看起来不像瞬移。但是当相机设置为跟随玩家并带有阻尼时,玩家看起来就像传送一样(其他不移动的物体仍然显示正常)。

相机编码

func _process(delta):
    #Smooth transition
    var to = character.position + origin
    camPosWoutOffset = smoothTo(camPosWoutOffset, to, smoothness, delta)

    #offset added to smoothed position
    self.global_transform.origin = Vector3(camPosWoutOffset.x + offset.x,
    origin.y + offset.y, camPosWoutOffset.z + offset.z)

func smoothTo(from: Vector3, to: Vector3, smoothness: float, delta: float) -> Vector3:
    var output = Vector3(damp(from.x, to.x, smoothness, delta),
    to.y, damp(from.z, to.z, smoothness, delta))
    return output

func damp(source: float, target: float, smoothing: float, delta: float) -> float:
    return lerp(source, target, 1 - pow(smoothing, delta))

播放器处的代码

    accel = axis * 150 * delta
    velocity += accel
    velocity = velocity.limit_length(MaxSpeed)
    move_and_slide()

外观如何: https://youtu.be/s1cYYLDoNk8 https://www.youtube.com/watch?v=s1cYYLDoNk8

我尝试过带或不带“增量时间”的 lerp、slerp,但都有问题。

game-physics game-development godot gdscript godot4
1个回答
0
投票

应该写“_physical_process(delta):”而不是“_process(delta):”修复它。

© www.soinside.com 2019 - 2024. All rights reserved.