Diskuze: XNA AI přibližování

C# .NET .NET (C# a Visual Basic) XNA AI přibližování American English version English version

Avatar
vesel.fil
Člen
Avatar
vesel.fil:

Ahoj, v mé hře mám 2 obejkty se známými x a y a potřebuji aby se obejkt 2 postupně přibližoval k tomu druhému než bude 500px daleko. Jak na to?
Zkusil jsem toto:

double a = this.Position.Y - p.Position.Y;
            double b = p.Position.X - this.Position.X;
            double c = Math.Sqrt(Math.Pow(a, 2) + Math.Pow(b, 2));
            float rotation = (float)Math.Atan(a / b);
            this.Rotation = rotation;
            if (c < 300) return;
            Console.WriteLine(rotation);
            Position += new Vector2((float)Math.Cos(Rotation), -(float)Math.Sin(Rotation)) * Speed;

Což ale nefungovalo.

Odpovědět 15.3.2014 20:55
I don't necessarily agree with everything I say.
Avatar
Odpovídá na vesel.fil
Luboš Běhounek (Satik):

Zkus Atan2 místo Atan.
A pojmenovávej proměnné trochu inteligentněji :)

Nahoru Odpovědět 15.3.2014 21:01
:)
Avatar
vesel.fil
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
vesel.fil:

Vypadá lépe, díky. Ono to fungovalo i před tím, ale když jsem létal přímo přes nepřítele (to co má letět za mnou) tak si to někdy rozmyslelo a začalo to dělat přesně opačnou věc. S tímhle se mi to nepodařilo. A jestli myslíš ty proměné a, b, c, tak to mají být strany trojůhelníku. :)

Nahoru Odpovědět 15.3.2014 21:05
I don't necessarily agree with everything I say.
Avatar
Odpovídá na vesel.fil
Luboš Běhounek (Satik):

aha, pak už to trochu logiku dává, ale i tak bych to asi spíš pojmenoval jako deltaX, deltaY a distance nebo nějak podobně :)

Nahoru Odpovědět 15.3.2014 21:09
:)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.