3D grid movement and movement in general

Godot Version

Godot 4.2.2

Question

I am completely new to Godot and I decided as my first game to do an attempt at re-creating Kula World a game I really like which seemed pretty simple to do. It’s a ball that traverses what seems to be a grid based level made out of blocks.

For now I am trying to do the seemingly simple thing:

  1. press forward = move 1 block
  2. press forward + jump = move 2 blocks
  3. Needs collisions

As an added difficutly and important detail the ball has to smoothly move between blocks and can also jump mid-way transitioning to the next block.

I did the obvious thing following the documentation and used the grid map to build a simple level.

and now to the actual movement throught the level…after spending 2 whole weeks to just move the ball a single block or 1m or 1 z unit, I still do not know how to approach the problem.

move_and_slide(): Has collision and moves smoothly I can jump too but I cannot make it “lerp” to a destination

transform.interpolate_with(): needs constant input to reach destination

tween.tween_property(): I can press forward and smoothly transition to the target position BUT there are no collisions and I lose my jump.( I may have to setup a second tween for jumping?)

and then reading further more I find out about pathfinding and 3D navigation and it’s meshes and servers, regions etc.

Also the fact that almost everything I search in terms of the 3d Grid is actualy about Tilemap in 2D also doesn’t help.

On the other end, the documentation is quite frequently not clear or comprehensive to read and sometimes it’s even wrong. The Transform3D.interpolate_with() example is wrong (at least based on what is claiming to do).

I haven’t even touched the gravity changing direction where you “climb” a block upwards.

Should I write the whole behaviour myself?
Are tween and interpolate used for movement at all or just animations?
Should I even use the grid map?
Should I keep it and use navigation/pathfinding?

I would really appreciate it if someone could clear things up on how to tackle this movement problem or explain how movement like the one I describe can be constructed and applied to the 3D grid or without it.

Not asking for code but examples are welcomed!