public static Waypoint GetNearest(Vector3 pos) { Waypoint closest = null; float cdist = 1000000; foreach (var wp in all) { float dist = PersoController.Dist(pos, wp.pos); if (dist < cdist) { cdist = dist; closest = wp; } } return(closest); }
public void ApplyZDRCollision() { if (perso == null || !perso.HasCollisionType(CollideType.ZDR)) { return; } foreach (var p in PersoController.GetPersos(typeof(PersoController)).Where((x) => x.HasCollisionType(CollideType.ZDR))) { var zdr1 = perso.GetCollisionSphere(CollideType.ZDR); var zdr2 = p.GetCollisionSphere(CollideType.ZDR); float dist = PersoController.Dist(zdr1.position, zdr2.position); float maxDist = zdr1.radius + zdr2.radius; if (dist < maxDist) { perso.pos += (zdr1.position - zdr2.position).normalized * (maxDist - dist); } } }