当前位置: 首页>>代码示例>>C#>>正文


C# Vector2f.LengthSquared方法代码示例

本文整理汇总了C#中Vector2f.LengthSquared方法的典型用法代码示例。如果您正苦于以下问题:C# Vector2f.LengthSquared方法的具体用法?C# Vector2f.LengthSquared怎么用?C# Vector2f.LengthSquared使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Vector2f的用法示例。


在下文中一共展示了Vector2f.LengthSquared方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: TryCollide

        /// <summary>
        /// returns true if collider intersects a collidable under management and calls Bump.
        /// </summary>
        /// <param name="collider">Rectangle to check for collision</param>
        /// <returns></returns>
        public bool TryCollide(Entity entity, Vector2f offset, bool bump = true)
        {
            var collider = (ColliderComponent)entity.GetComponent(ComponentFamily.Collider);
            if (collider == null) return false;

            var ColliderAABB = collider.WorldAABB;
            if (offset.LengthSquared() > 0)
            {
                ColliderAABB.Left += offset.X;
                ColliderAABB.Top += offset.Y;
            }

            Vector2f[] points =
                {
                    new Vector2f(ColliderAABB.Left, ColliderAABB.Top),
                    new Vector2f(ColliderAABB.Right(), ColliderAABB.Top),
                    new Vector2f(ColliderAABB.Right(), ColliderAABB.Bottom()),
                    new Vector2f(ColliderAABB.Left, ColliderAABB.Bottom())
                };

            var aabbs =
                points
                .Select(GetBucket) // Get the buckets that correspond to the collider's points.
                .Distinct()
                .SelectMany(b => b.GetPoints()) // Get all of the points
                .Select(p => p.ParentAABB) // Expand points to distinct AABBs
                .Distinct()
                .Where(aabb => aabb.Collidable.AABB.Intersects(ColliderAABB)); //try all of the AABBs against the target rect.

            //try all of the AABBs against the target rect.
            bool collided = false;
            foreach (var aabb in aabbs)
            {
                if (aabb.IsHardCollider) //If the collider is supposed to prevent movement
                {
                    collided = true;
                }

                if(bump) aabb.Collidable.Bump(entity);
            }
            return collided || IoCManager.Resolve<IMapManager>().GetTilesIntersecting(ColliderAABB, true).Any(t => t.Tile.TileDef.IsCollidable);
        }
开发者ID:MSylvia,项目名称:space-station-14,代码行数:47,代码来源:CollisionManager.cs


注:本文中的Vector2f.LengthSquared方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。