Пример #1
0
        internal void Przesóń(float WspółczynikZmiany, ObiektFizyczny obiektFizyczny2, Vector2 PunkStyku, Vector2 WzglednośćSierodków, Vector2 WzglednośćPredkości)
        {
            kierunekWektor += WzglednośćPredkości;
            Miejsce        -= WzglednośćSierodków * 5 / WzglednośćSierodków.Length();
            float Iloraz = 0.1f;
            float SKąt   = Convert.ToSingle(Math.PI + Math.Atan2(PunkStyku.Y, PunkStyku.X));
            float SKąt2  = Convert.ToSingle(Math.PI + Math.Atan2(WzglednośćSierodków.Y, WzglednośćSierodków.X));

            Iloraz *= Math.Abs(SKąt - SKąt2);
            if ((SKąt) % MathHelper.PiOver2 < MathHelper.PiOver4)
            {
                Iloraz *= 1;
            }
            else
            {
                Iloraz *= -1;
            }
            Kierunek += Iloraz;
        }
Пример #2
0
        public bool Kolizja(ObiektFizyczny ob, out Vector2 PunktStyku)
        {
            PunktStyku = Vector2.Zero;
            Vector2 v       = ob.Miejsce - Miejsce;
            float   zasieng = ob.Szkielet.MaksymalnyZasieng + Szkielet.MaksymalnyZasieng;

            if (v.X * v.X + v.Y * v.Y > (zasieng * zasieng))
            {
                return(false);
            }
            if (Szkielet.Kolizja(ob.Szkielet, v, out PunktStyku))
            {
                if (EventKolizja != null)
                {
                    EventKolizja(this, v);
                }
                return(true);
            }
            return(false);
        }