예제 #1
0
    void GridRayCast(CollisionData collisionData, Vector3 direction)
    {
        collisionData.hasHit = false;

        for (int x = 0; x < gridSize; x++)
        {
            for (int y = 0; y < gridSize; y++)
            {
                float      xx            = GameMath.CenterAlign(gridSize, spread.x, x);
                float      yy            = y * spread.y;
                Vector3    startPosition = transform.position + transform.right * xx + transform.up * yy + transform.TransformDirection(offset);
                Ray        ray           = new Ray(startPosition, direction);
                RaycastHit info;
                if (Physics.Raycast(ray, out info, forwardRaycastLength, collidingLayerMask))
                {
                    Debug.DrawRay(ray.origin, ray.direction * forwardRaycastLength, Color.red);
                    collisionData.collider = info.collider;
                    collisionData.hasHit   = true;
                }
                else
                {
                    Debug.DrawRay(ray.origin, ray.direction * forwardRaycastLength, Color.green);
                }
            }
        }
    }