How to move KinematicBody 3D object to (and how to rotate to face toward) a location

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By bcid

Hi all,

I have been trying to make this work all day. Seems simple but I’m new to game development (but not new to coding).

I got a location of the mouse click against a StaticBody (Ground) and that’s working perfectly fine. Moving and rotating works for the first click only but subsequent click become worse and worse. 2nd click sometimes work.

My project is at GitHub - sidbc/3DCharacterClickToMove

The particular code of the ‘Player’ attached below. Also a gif animation showing how it currently runs (white ball is showing the mouse click location) and how the first click works but not subsequent clicks:

func _physics_process(delta):
	if moving == false:
		speed = 0
	speed += acceleration * delta
	if speed > maxspeed:
		speed = maxspeed

var transform_origin = transform.origin
var distance_to = transform_origin.distance_to(destination)

# Magic number 5, I don't know why but smaller number doesn't work???
if distance_to > 5:
	moving = false

func _on_Ground_input_event(camera, event,  new_position, normal, shape_idx):
	if moving == false and event.is_action_pressed("ui_click"):
		moving = true
		destination = new_position
	elif moving == true and event.is_action_pressed("ui_click"):
		moving = false

Please help this newbie! :__(

:bust_in_silhouette: Reply From: bcid

Actually there’s a much easier way to achieve this: