Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Realne chodzenie na skosy?


Rekomendowane odpowiedzi

Opublikowano
if (chodzenie)
            {
                if(chodzenieg)
                {                    if(pozycjaz < chodzeniez)
                        pozycjaz +=  speed;
                    if(pozycjaz > chodzeniez)
                        pozycjaz -= speed;
                }
                if(chodzenieb)
                {
                    if(chodzeniex > pozycjax)
                        pozycjax += speed;
                    if(chodzeniex < pozycjax)
                        pozycjax -= speed;
                }
                if(abs(pozycjax-chodzeniex)<=speed)
                {
                    pozycjax = chodzeniex;
                    chodzenieb = false;
                }
                if(abs(pozycjaz-chodzeniez)<=speed)
                {
                    pozycjaz = chodzeniez;
                    chodzenieg = false;
                }
                if(abs(pozycjax-chodzeniex)<=speed && abs(pozycjaz-chodzeniez)<=speed)//abs usuwa minus
                {
                    chodzenie = false;
                }
            }
 

wytlumaczenie

pozycjax = x postaci

pozycjaz = y postaci

chodzeniex = x punktu gdzie postać idzie

chodzeniez = y punktu gdzie postać idzie

speed = stała ruchu tutaj = 3;

 

 

i pytanko jest takie, jak zrobić realistyczne chodzenie, aby szlo jednostajnie prostoliniowo przez ten skos

bo aktualnie, ten kod za każdym razem dodaje x i y, jak przejdzie x lub y to porusza się prosto no, przez co kąty chodzenia są śmieszne, czyli 45 stopni, 90 135 180 itd

 

obrazek który przedstawia co chciałbym osiągnąć

http://screenshooter.net/9246699/ileajun

czerwona linia, aktualny stan, niebieska linia, tak chciałbym

Opublikowano

wliczasz kąt pomiędzy punktami za pomocą funkcji atan2 z math.h

http://www.cplusplus.com/reference/cmath/atan2/

później wyliczasz za pomocą funkcji sin i cos (też z math.h) w jakich proporcjach trzeba iść kolejno w osiach x i y, aby osiągnąć dany punkt

 

btw. funkcja atan2 zwraca wynik w radianach. sin i cos przyjmują wartości również w radianach, więc nie musisz się martwić o przeliczanie

Opublikowano

wliczasz kąt pomiędzy punktami za pomocą funkcji atan2 z math.h

http://www.cplusplus.com/reference/cmath/atan2/

później wyliczasz za pomocą funkcji sin i cos (też z math.h) w jakich proporcjach trzeba iść kolejno w osiach x i y, aby osiągnąć dany punkt

 

btw. funkcja atan2 zwraca wynik w radianach. sin i cos przyjmują wartości również w radianach, więc nie musisz się martwić o przeliczanie

wliczasz kąt pomiędzy punktami za pomocą funkcji atan2 z math.h

http://www.cplusplus.com/reference/cmath/atan2/

później wyliczasz za pomocą funkcji sin i cos (też z math.h) w jakich proporcjach trzeba iść kolejno w osiach x i y, aby osiągnąć dany punkt

 

btw. funkcja atan2 zwraca wynik w radianach. sin i cos przyjmują wartości również w radianach, więc nie musisz się martwić o przeliczanie

Miedzy jakimi punktami? Jak sie poda 2 punkty to wyjdzis linia jak jest liczony zntego kat?

Pisze boty do gier WWW na zlecenie.

Opublikowano

@up

nie mam pojęcia, ale prześledziłem na konsoli wszystko i taki kod mi pyka pięknie

 

 

result = atan2 (poczateky-pozycjaz,poczatekx-pozycjax)* 180 / PI;
  resultx = sin (result*PI/180);
  resulty = cos (result*PI/180);
 

podczas kliknięcia

 

 

 

if(chodzenieg)
                {                    if(pozycjaz < chodzeniez || pozycjaz > chodzeniez)
                        pozycjaz +=  resultx*speed;
                }
                if(chodzenieb)
                {
                    if(chodzeniex > pozycjax || chodzeniex < pozycjax)
                        pozycjax += resulty*speed;
                }
                if(abs(pozycjax-chodzeniex)<=speed)
                {
                    pozycjax = chodzeniex;
                    chodzenieb = false;
                }
                if(abs(pozycjaz-chodzeniez)<=speed)
                {
                    pozycjaz = chodzeniez;
                    chodzenieg = false;
                }
                if(abs(pozycjax-chodzeniex)<=speed && abs(pozycjaz-chodzeniez)<=speed)//abs usuwa minus
                {
                    chodzenie = false;
                }
            }
 

funkcja chodzenia, opis zmiennych masz na górze

 

 

aaa i obrazek który pomógł mi zrozumieć to

675px-Sin_Cos_Tan_Cot_unit_circle.svg.pn

tzn zczaić, bo i tak za chuja tego gówna nie rozumiem xD

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...