BEPUphysics.Space.RayCast C# (CSharp) Метод

RayCast() публичный Метод

Tests a ray against the space.
public RayCast ( BEPUutilities.Ray ray, RayCastResult &result ) : bool
ray BEPUutilities.Ray Ray to test.
result RayCastResult Hit data of the ray, if any.
Результат bool
        public bool RayCast(Ray ray, out RayCastResult result)
        {
            return RayCast(ray, float.MaxValue, out result);
        }

Same methods

Space::RayCast ( BEPUutilities.Ray ray, bool>.Func filter, RayCastResult &result ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, bool>.Func filter, IList outputRayCastResults ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, bool>.Func filter, RayCastResult &result ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, IList outputRayCastResults ) : bool
Space::RayCast ( BEPUutilities.Ray ray, float maximumLength, RayCastResult &result ) : bool

Usage Example

Пример #1
0
        /// <summary>
        /// Determines whether there is a cliff nearby.
        /// </summary>
        /// <param name="position">Position to look from.</param>
        /// <param name="facingDirection">Direction to check in.</param>
        /// <param name="filter">Anonymous function to filter out unwanted objects.</param>
        /// <param name="space">The space to check for a cliff in.</param>
        /// <param name="distance">The distance to check at.</param>
        /// <returns>True if a cliff was detected, false otherwise.</returns>
        public static bool FindCliff(Vector3 position, Vector3 facingDirection, Func<BroadPhaseEntry, bool> filter, Space space, float distance)
        {
            // If there is a wall before the requested distance assume there is no cliff.
            Ray forwardRay = new Ray(position, new Vector3(facingDirection.X, 0, facingDirection.Z));
            RayCastResult forwardResult = new RayCastResult();
            space.RayCast(forwardRay, filter, out forwardResult);
            if ((forwardResult.HitData.Location - position).Length() < distance)
            {
                return false;
            }

            facingDirection.Normalize();
            Ray futureDownRay = new Ray(position + new Vector3(facingDirection.X * distance, 0, facingDirection.Z * distance), Vector3.Down);
            RayCastResult result = new RayCastResult();
            space.RayCast(futureDownRay, filter, out result);

            Vector3 drop = result.HitData.Location - futureDownRay.Position;
            if (drop.Y < -6.0f)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
All Usage Examples Of BEPUphysics.Space::RayCast