private void DrawAvoidLine() { for (int i = 0; i < vectorInPath.Count - 1; ++i) { JSHelper.DebugDrawLine(vectorInPath [i], vectorInPath [i + 1], Color.red, 5.0f); } }
private Vector3 GetObstacleDirectllyColliderVector(JSObstacleCollider obstacle, Vector3 start, Vector3 end, float radius) { crossPoint.Clear(); Vector3[] obstacleVertexs = new Vector3[4]; obstacleVertexs [0] = new Vector3(obstacle.SelfCollider.size.x * 0.5f + radius, 0, obstacle.SelfCollider.size.z * 0.5f + radius); obstacleVertexs [1] = new Vector3(obstacle.SelfCollider.size.x * 0.5f + radius, 0, -obstacle.SelfCollider.size.z * 0.5f - radius); obstacleVertexs [2] = new Vector3(-obstacle.SelfCollider.size.x * 0.5f - radius, 0, -obstacle.SelfCollider.size.z * 0.5f - radius); obstacleVertexs [3] = new Vector3(-obstacle.SelfCollider.size.x * 0.5f - radius, 0, obstacle.SelfCollider.size.z * 0.5f + radius); obstacleVertexs [0] = obstacle.ColliderCenterTransform.TransformPoint(obstacleVertexs [0]); obstacleVertexs [1] = obstacle.ColliderCenterTransform.TransformPoint(obstacleVertexs [1]); obstacleVertexs [2] = obstacle.ColliderCenterTransform.TransformPoint(obstacleVertexs [2]); obstacleVertexs [3] = obstacle.ColliderCenterTransform.TransformPoint(obstacleVertexs [3]); for (int i = 0; i < obstacleVertexs.Length; ++i) { JSHelper.DebugDrawLine(obstacleVertexs [i % 4], obstacleVertexs [(i + 1) % 4], Color.yellow, 5.0f); CrossPoint(start, end, obstacleVertexs [i % 4], obstacleVertexs [(i + 1) % 4], start.y); } if (crossPoint.Count > 0) { Vector3 closestPoint = crossPoint [0]; if (crossPoint.Count > 1) { float closestDistance = Vector3.Distance(start, crossPoint [0]); for (int i = 1; i < crossPoint.Count; ++i) { if (Vector3.Distance(start, crossPoint [i]) < closestDistance) { closestDistance = Vector3.Distance(start, crossPoint [i]); closestPoint = crossPoint [i]; } } } return(closestPoint); } return(end); }
private void DrawDirectllyLine(Vector3 start, Vector3 end) { JSHelper.DebugDrawLine(start, end, Color.blue, 5.0f); }