Implemented player controller in client
This commit is contained in:
		
							
								
								
									
										38
									
								
								client/scripts/entities/Player.gd
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								client/scripts/entities/Player.gd
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
			
		||||
extends KinematicBody2D
 | 
			
		||||
 | 
			
		||||
signal finished_moving
 | 
			
		||||
 | 
			
		||||
export var base_movement_speed = 100
 | 
			
		||||
export(NodePath) var world
 | 
			
		||||
 | 
			
		||||
onready var navigation : Navigation2D = get_node(world)
 | 
			
		||||
var path : PoolVector2Array
 | 
			
		||||
var move : bool = false
 | 
			
		||||
 | 
			
		||||
func _process(delta):
 | 
			
		||||
	
 | 
			
		||||
	# Click for movement target
 | 
			
		||||
	if Input.is_action_just_pressed("move_to_cursor"):
 | 
			
		||||
		path = navigation.get_simple_path(global_position, get_global_mouse_position())
 | 
			
		||||
		move = true
 | 
			
		||||
	
 | 
			
		||||
	if move:
 | 
			
		||||
		move_along_path(base_movement_speed * delta)
 | 
			
		||||
 | 
			
		||||
func move_along_path(distance : float):
 | 
			
		||||
	var start_point := global_position
 | 
			
		||||
	for i in range(path.size()):
 | 
			
		||||
		var distance_to_next := start_point.distance_to(path[0])
 | 
			
		||||
		if distance <= distance_to_next and distance >= 0.0:
 | 
			
		||||
			global_position = start_point.linear_interpolate(path[0], distance/distance_to_next)
 | 
			
		||||
			break
 | 
			
		||||
		elif distance < 0.0:
 | 
			
		||||
			global_position = path[0]
 | 
			
		||||
			emit_signal("finished_moving")
 | 
			
		||||
			print("DONE")
 | 
			
		||||
			move = false
 | 
			
		||||
			break
 | 
			
		||||
		distance -= distance_to_next
 | 
			
		||||
		start_point = path[0]
 | 
			
		||||
		path.remove(0)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user