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

Unity 3d- funckja do przemieszczania + problem z collidermi

Object Storage Arubacloud
0 głosów
302 wizyt
pytanie zadane 20 lipca 2016 w C i C++ przez niezalogowany

SIemka mam 2 problemy w Unity:

1. chce aby jeden obj przemieszczal sie do drugiego z STAŁĄ PREDKOSCIA  mam taki kod:

  target = player.transform.position -  gameObject.transform.position;
        gameObject.transform.Translate(target * Time.deltaTime );

target to zmienna typu Vector3 i jest rowenaa pozycji celu. No i teraz wiem że target jest roznica pozycji playera i objektu wiec one sie beda zmniejszac wiec i predkosc sie zmniejsza. I wlasnie jak mam zapisac ta funkcje tak aby to bylo ze stala predkoscia? aby ten vector (jego zmiana) nie miala wplywu na predkosc? nie moge do tego dojsc nawet z dokumentacja -->     https://docs.unity3d.com/ScriptReference/Transform.Translate.html

 

2.mam duzo kłopotu z void OnCollisionEnter(Collision col) a konkretnie daje ta funkcje i jej ciało sie nie wykonuje a ja nie wiem juz co jest nie tak. Oba maja collidery nie wiem ktoremu mam dac is trigger ale probowalem juz wszsystkei opcje i mam taka dziwna rzecz czasem ze on nie wykrywa ale jak ja porusze obktem to nagle zaczyna wygrywac. tak jakby zaczynal dopiero przy ruchu

2 odpowiedzi

0 głosów
odpowiedź 21 lipca 2016 przez jarek9244 Gaduła (3,430 p.)
0 głosów
odpowiedź 21 lipca 2016 przez niezalogowany

Przede wszystkim: nie używaj transforma do poruszania obiektem jeżeli masz na nim Rigidbody (a pewnie masz), używaj go tylko do pobierania pozycji, a nie sterowania obiektami bo w momencie gdy obiekty sterowane w ten sposób wejdą ze sobą w interakcję (kolizję) to najpewniej wylecą w kosmos.

Jeżeli zależy ci na stałej prędkości to zrób coś takiego:

float speed = 5.0f; // prędkość z jaką ma się poruszać;

...

// policzenie wektora poruszania
Vector3 dir = transform.position -  target.transform.position;
dir = dir.normalized;

// ruch
rb.velocity = dir * speed; // ew. * Time.deltaTime;

 

Podobne pytania

0 głosów
0 odpowiedzi 343 wizyt
pytanie zadane 29 lipca 2016 w C# przez natrov Gaduła (3,970 p.)
0 głosów
0 odpowiedzi 273 wizyt
pytanie zadane 23 lipca 2016 w C# przez natrov Gaduła (3,970 p.)
0 głosów
0 odpowiedzi 474 wizyt
pytanie zadane 23 lipca 2016 w C# przez natrov Gaduła (3,970 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 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!

...