但是,我尝试在GODOT中使用lerp()函数进行线性插值;我的项目中的对象突然停止,就像它永远不会变慢一样。
extends KinematicBody
var SPEED = 200
var direction = Vector3()
func _ready():
pass
func _physics_process(_delta):
direction = Vector3(0,0,0)
if Input.is_action_pressed("ui_left"):
direction.x -= 1
lerp(direction.x, 0, 1)
if Input.is_action_pressed("ui_right"):
direction.x += 1
lerp(direction.x, 0, 1)
if Input.is_action_pressed("ui_up"):
direction.z -= 1
lerp(direction.z, 0, 1)
if Input.is_action_pressed("ui_down"):
direction.z += 1
lerp(direction.z, 0, 1)
direction = direction.normalized()
direction = direction * SPEED * _delta
move_and_slide(direction, Vector3(0,1,0))发布于 2021-06-09 15:22:46
通过将lerp函数的最后一个参数设置为“1”,可以将第二个参数的权重设置为100%。所以它会立即跳到这个位置。要使该值平滑地减慢,必须减小该值。(可能的取值范围为0到1.0)
下面是一些例子:
lerp(0, 4, 0.75) # Returns 3.0
lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)https://stackoverflow.com/questions/66663545
复制相似问题