예제 #1
0
        protected float GetArmorSectorRotationOffset(Vector2 armorSector)
        {
            float midAngle = MathUtils.GetMidAngle(armorSector.X, armorSector.Y);
            float spritesheetOrientation = Params.GetSpriteOrientation();

            return(midAngle + spritesheetOrientation);
        }
예제 #2
0
        protected float GetArmorSectorRotationOffset(Vector2 armorSector)
        {
            float midAngle = MathUtils.GetMidAngle(armorSector.X, armorSector.Y);
            float spritesheetOrientation = MathHelper.ToRadians(limbParams.Ragdoll.SpritesheetOrientation);

            return(midAngle + spritesheetOrientation);
        }
예제 #3
0
        public bool SectorHit(Vector2 armorSector, Vector2 simPosition)
        {
            if (armorSector == Vector2.Zero)
            {
                return(false);
            }
            //sector 360 degrees or more -> always hits
            if (Math.Abs(armorSector.Y - armorSector.X) >= MathHelper.TwoPi)
            {
                return(true);
            }
            float rotation   = body.TransformedRotation;
            float offset     = (MathHelper.PiOver2 - MathUtils.GetMidAngle(armorSector.X, armorSector.Y)) * Dir;
            float hitAngle   = VectorExtensions.Angle(VectorExtensions.Forward(rotation + offset), SimPosition - simPosition);
            float sectorSize = GetArmorSectorSize(armorSector);

            return(hitAngle < sectorSize / 2);
        }