Exemple #1
0
 private void DrawAvoidLine()
 {
     for (int i = 0; i < vectorInPath.Count - 1; ++i)
     {
         JSHelper.DebugDrawLine(vectorInPath [i], vectorInPath [i + 1], Color.red, 5.0f);
     }
 }
Exemple #2
0
    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);
    }
Exemple #3
0
 private void DrawDirectllyLine(Vector3 start, Vector3 end)
 {
     JSHelper.DebugDrawLine(start, end, Color.blue, 5.0f);
 }