1 Pluspunkt 0 Minuspunkte

Ich habe dieses Script zur Steuerung eines Vehiclebody3d.

extends VehicleBody3D

func _physics_process(delta: float) -> void:

    steering = Input.get_axis("move_right", "move_left") * 0.5
    engine_force = Input.get_axis( "move_backward", "move_forward" ) * 80 

    for child in get_children():
        if child is VehicleWheel3D:
            if child.steering:
                child.set_steering(steering)
            else:
                child.engine_force = engine_force

Wenn ich lenke, werden die Reifen ohne Verzögerung in die entsprechende Richtung gelenkt bzw das Auto fährt wieder gerade sobald ich den Button loslasse. Wie kann ich machen das die Lenkung nicht so abrupt ist?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst eine Interpolation oder Dämpfung mit lerp (linear interpolation) oder lerp_angle (um sanft zwischen Winkelwerten zu interpolieren) einfügen um die Lenkwinkeländerung über Zeit zu glätten. 

extends VehicleBody3D

var steering_smoothness : float = 5.0  # Steuerungsdämpfung

func _physics_process(delta: float) -> void:
    var target_steering = Input.get_axis("move_right", "move_left") * 0.5
    var target_engine_force = Input.get_axis("move_backward", "move_forward") * 80

    # Steuerung anwenden (sanft interpolieren)
    steering = lerp(steering, target_steering, steering_smoothness * delta)

    engine_force = target_engine_force

    for child in get_children():
        if child is VehicleWheel3D:
            if child.steering:
                child.set_steering(steering)
            else:
                child.engine_force = engine_force
von (884 Punkte)