Skip to content

Instantly share code, notes, and snippets.

@kaadmy
Created November 9, 2018 19:36
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kaadmy/1bdaa96ab5ad3d43067134a2e5262d55 to your computer and use it in GitHub Desktop.
Save kaadmy/1bdaa96ab5ad3d43067134a2e5262d55 to your computer and use it in GitHub Desktop.
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