• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Unity 3D - przyciąganie się obiektów?

Object Storage Arubacloud
0 głosów
1,053 wizyt
pytanie zadane 22 listopada 2016 w OpenGL, Unity przez Tom_Ja Dyskutant (7,970 p.)
zmienione kategorie 22 listopada 2016 przez Tom_Ja
W jaki sposób mogę dodać wzajemne przyciąganie się dwóch obiektów do siebie w Unity3D?
1
komentarz 22 listopada 2016 przez Jacek Rojek Bywalec (2,380 p.)
2D czy 3D? 1 obiekt to gracz, czy sa to 2 naturalne obiekty?

3 odpowiedzi

0 głosów
odpowiedź 22 listopada 2016 przez niezalogowany
Zależy o jakim przyciąganiu mówisz, możesz użyć np Jointów
komentarz 22 listopada 2016 przez Tom_Ja Dyskutant (7,970 p.)
Chodzi mi np. o planety - wzajemne przyciąganie się słońca i ziemi - i innych ciał niebieskich.
komentarz 22 listopada 2016 przez Jacek Rojek Bywalec (2,380 p.)

mozesz uzyc kompunenty takiego jak Effector - ten daje punktowe pole 2d.

0 głosów
odpowiedź 22 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
http://www.fizykon.org/wzory/wzory_grawitacja.htm

Musisz umieć wyznaczyć masę obiektów i ich wzajemną odległość. Potem podstawiasz pod wzór i masz siłę.
Potem z siły możesz wyznaczyć wektory
komentarz 22 listopada 2016 przez Tom_Ja Dyskutant (7,970 p.)
Stricte fizyka to żaden problem. Chodzi mi raczej jak to zastosować w Unity. Muszę napisać skrypt, program?

Patrząc na dokumentację Unity nie potrafię znaleźć, co mógłbym wykorzystać.

A nie chciałbym spisywać z tutoriali, czy pomocy, ale sam to zrobić. :)
1
komentarz 22 listopada 2016 przez Knayder Nałogowiec (37,640 p.)
edycja 22 listopada 2016 przez Knayder

Pokażę ci to na przykładzie 2D, ponieważ tylko w tym pracowałem.
musisz pomnożyć siłę, przez boki trójkąta prostokątnego, którego naprzeciw prostokątna, ma wartość 1 i ten sam kierunek oraz zwrot co wektor odległości między planetami.
Dam ci tutaj kod w c++:

//pos1 pozycja pierwszej planety
//pos2 pozycja drugiej planety
//mass1 masa pierwszej planety
//mass2 masa drugiej planety

float x = pos2.x - pos1.x;
float y = pos2.y - pos1.y;
float c = x*x + y*y;
float gravity = (mass1 *mass2)/c; //Nie uzywam stalej grawitacji
c = sqrt(c);
Vector vec1( (x/c) * (gravity / mass1),  (y/c) * (gravity / mass1) );
Vector vec2( -((x/c) * (gravity / mass2)),  -((y/c) * (gravity / mass2)) );

planet1.move(vec1);
planet2.move(vec2);

 

0 głosów
odpowiedź 22 listopada 2016 przez Jacek Rojek Bywalec (2,380 p.)

mozesz uzyc kompunenty takiego jak Effector - ten daje punktowe pole 2d.

komentarz 22 listopada 2016 przez Tom_Ja Dyskutant (7,970 p.)
edycja 22 listopada 2016 przez Tom_Ja

Dzięki za odpowiedź.

Do dwóch sphere nie zadziała, więc powinienem utworzyć, rozumiem, obiekty 2D. Tylko, że takowe to tylko sprits. Czy można jakoś je zamienić na kule?

Chodzi mi o coś w stylu symulacji planet. 

 

---

Podczas pisania tego komentarza, pomyślałem, żeby stworzyć dwie sfery 3D i do nich wpiąć Sprity. Sprity mają 2Dpoint, sferom dałem Rigidbody, jednej zmniejszyłem masę, wyłączyłem grawitację. I nie działa... (nie oczekuję, żeby działało, ale chyba czegoś nie wiem).

Dodam, że podczas zakładania nowego projektu zaznaczyłem że ma być 2D.

Wybacz głupie pytania, ale dopiero startuję ;)

Podobne pytania

0 głosów
1 odpowiedź 503 wizyt
pytanie zadane 28 sierpnia 2017 w C# przez Strzechoniusz Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 285 wizyt
pytanie zadane 4 maja 2017 w C# przez Patryk8090 Użytkownik (520 p.)
0 głosów
0 odpowiedzi 343 wizyt
pytanie zadane 29 lipca 2016 w C# przez natrov Gaduła (3,970 p.)

92,552 zapytań

141,399 odpowiedzi

319,533 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...