It gets the position of the player, then the position of the mouse.
after doing both of those things, it calculates a little distance between the mouse and the player player.global_position.distance_to(mouse.global_position)
and then divides that by 100 because there's a LOT of pixels on your screen.
then it gets the midpoint between those two points, by its regular formula... (x1 + x2) / 2, (y1 + y2) / 2
for x however, it applies 2 * distance_to_mouse
and for y it adds 70 * distance_to_mouse
if the mouse is below the player
and takes away 70 * distance_to_mouse
from y if the mouse is above the player.
Here's a visual screenshot of the 3 points used for Interpolation (The Pink Blocks):
then it takes those 2 positions and interpolates them 50 times (so the curve is smooth) by doing
func bezier(t, p0, p1, p2):
var q0 = p0.lerp(p1, t)
var q1 = p1.lerp(p2, t)
var r = q0.lerp(q1, t)
return r
no clue how it works, I found it on godot's page but it works, p0 is the player, p1 is the midpoint, p2 is the mouse and t is is the "time" of the curve, so we kinda "render" it point by point, (0 to 1)
2 comments