Hi there,
GDscript is too slow to handle multiple characters movement
`
func navMeshMove(delta):
if (path.size() > 1):
if( player.global_transform.origin.distance_to(global_transform.origin) < 5):
decreaseSpeed = true ;
if(decreaseSpeed):
print("decreaseSpeed");
speedMove -= delta*30;
if(speedMove<0.3):
speedMove = 0.3;
var to_walk = delta*speedMove;
var to_watch = Vector3(0, 1, 0);
while(to_walk > 0 and path.size() >= 2):
var pfrom = path[path.size() - 1];
var pto = path[path.size() - 2];
to_watch = (pto - pfrom).normalized();
var d = pfrom.distance_to(pto);
if (d <= to_walk):
path.remove(path.size() - 1);
to_walk -= d;
else:
path[path.size() - 1] = pfrom.linear_interpolate(pto, to_walk/d);
to_walk = 0;
var atpos = path[path.size() - 1];
print("atpos ", atpos);
print("to_walk ", to_walk);
var atdir = to_watch;
atdir.y = 0;
var t = Transform();
t.origin = atpos;
t=t.looking_at(atpos + atdir, Vector3(0, 1, 0));
self.transform = t;
#get_node("robot_base").set_transform(t)
if (path.size() < 2):
path = [];
print("path size <2 ");
navMeshMove = false;
else:
print("path size < 1 ");
navMeshMove = false;
`
Godot should include a C++ in engine navigation Api instead with variables
acceleration
turning speed
deceleration and stoping distance
And functions.
moveToDestination
StopMoving
ResumeMoving