Created
November 9, 2018 19:36
-
-
Save kaadmy/1bdaa96ab5ad3d43067134a2e5262d55 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extends Spatial | |
export var interpolate_position = true | |
export var interpolate_rotation = true | |
const lerp_duration = 1.0 / Engine.iterations_per_second | |
var lerp_elapsed = 0.0 | |
var lerp_transform_previous = Transform() | |
var lerp_transform_next = Transform() | |
onready var parent = get_parent() | |
func teleport(): | |
lerp_elapsed = 0.0 | |
lerp_transform_previous = parent.global_transform | |
lerp_transform_next = parent.global_transform | |
func _ready(): | |
teleport() | |
func _physics_process(delta): | |
lerp_elapsed = 0.0 | |
lerp_transform_previous = lerp_transform_next | |
lerp_transform_next = parent.global_transform | |
func _process(delta): | |
lerp_elapsed += delta | |
var lerp_ratio = lerp_elapsed / lerp_duration | |
if interpolate_position: | |
global_transform.origin = lerp_transform_previous.origin.linear_interpolate(lerp_transform_next.origin, lerp_ratio) | |
else: | |
global_transform.origin = lerp_transform_next.origin | |
if interpolate_rotation: | |
global_transform.basis = Basis(Quat(lerp_transform_previous.basis).slerp(Quat(lerp_transform_next.basis), lerp_ratio)) | |
else: | |
global_transform.basis = lerp_transform_next.basis |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment