示例#1
0
        public static bool Ausgebremst(Rechteck bewegt, Rechteck hinderniss, RichtungX richtungX, RichtungY richtungY)
        {
            if (Kollision(bewegt, hinderniss))
            {
                return(true);
            }

            var bewegungStoppen = false;

            switch (richtungX)
            {
            case RichtungX.NachRechts: bewegungStoppen |= hinderniss.GetLinks() > bewegt.GetLinks(); break;

            case RichtungX.NachLinks: bewegungStoppen |= hinderniss.GetLinks() < bewegt.GetLinks(); break;

            case RichtungX.Steht: break;

            default: throw new ArgumentOutOfRangeException(nameof(richtungX), richtungX, null);
            }

            switch (richtungY)
            {
            case RichtungY.NachOben: bewegungStoppen |= hinderniss.GetOben() < bewegt._hoehe; break;

            case RichtungY.NachUnten: bewegungStoppen |= hinderniss.GetOben() > bewegt.GetOben(); break;

            case RichtungY.Steht: break;

            default: throw new ArgumentOutOfRangeException(nameof(richtungY), richtungY, null);
            }

            return(bewegungStoppen);
        }
示例#2
0
 public static bool Kollision(Rechteck r1, Rechteck r2)
 {
     return(r1.GetLinks() < r2.GetRechts() &&
            r2.GetLinks() < r1.GetRechts() &&
            r1.GetOben() < r2.GetUnten() &&
            r2.GetOben() < r1.GetUnten());
 }