Autor Wątek: Problem z wystrzeleniem pocisku.  (Przeczytany 4738 razy)

Offline koirat

  • Użytkownik

# Styczeń 29, 2014, 16:12:22
Kierunek wygląda dość dobrze, powinno strzelać tam gdzie wskazuje latarka. A powiedz mi jeszcze czy pociski obierają kierunek w stronę patrzenia, czy zawsze strzelają w tym samym kierunku we współrzędnych świata  niezaleznie jak sie obrócisz ?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline dejmien

  • Użytkownik

# Styczeń 29, 2014, 16:37:57
Tak w tej osi akurat obierają dobry kierunek i lecą w tą stronę gdzie jest kamera gorzej z osią góra dół.

Offline koirat

  • Użytkownik

# Styczeń 29, 2014, 19:51:41
Sprawdź sobie czy dla Rigidbody pocisku nie masz włączonego jakiegoś constraints. W tym wypadku mógł by to być constraint dla Y.

Offline laggyluk

  • Użytkownik
    • twitter

# Styczeń 29, 2014, 21:30:06
sprawdź czy vektor velocity jest w 3 osiach różny od 0 bo może strzelasz tylko w kierunku w którym patrzy 'postać' a nie kamera? rotacja kotrolera postaci prawdopodobnie jest dozwolona tylko w osi y

Offline dejmien

  • Użytkownik

# Styczeń 29, 2014, 23:18:41
Problem rozwiązany... przeniosłem skrypt na MainCamera, docelowo był ustawiony na FirstPersonController...
Nie wiem co za różnica skoro obiekty i tak podaje osobno ale pomogło... dzięki wielkie za pomoc.

Offline koirat

  • Użytkownik

# Styczeń 29, 2014, 23:47:37
Jak nie wiesz co za różnica to problem nie jest rozwiązany.

Offline laggyluk

  • Użytkownik
    • twitter

# Styczeń 30, 2014, 00:09:56
Jak nie wiesz co za różnica to problem nie jest rozwiązany.
ważne żeby działało ;)

Offline Humman

  • Użytkownik

# Styczeń 30, 2014, 01:03:43
Witam.

Mam pewien problem ze skryptem odpowiedzialnym za wystrzelenie pocisku... kod wygląda tak:

public Transform ak;
if (Input.GetMouseButtonDown (0))
      {
         GameObject Pocisk = Instantiate(pocisk,ak.position, ak.rotation ) as GameObject;
         Pocisk.rigidbody.velocity = transform.forward*3000 *Time.deltaTime;

      }


zmienna pocisk = prefab z moim nabojem.
zmienna ak = pusty GameObject ustawiony tuż przy lufe karabinu.
Problem w tym że pociski leca tylko przed siebie tzn. gdy obracam kamerę do góry to pociski nie lecą tam gdzie patrze tylko do przodu.
Zmienna ak to pusty GameObject którego umieściłem w MainCamera. Czy ktoś wie co może być nie tak? Przez to utknołem w nauce i nie mogę się uczyć dalej...
- Zmień nieustawienie prędkości na ( Pocisk.rigidbody.velocity = ak.transform.forward ... ) teraz używasz orientacji obiektu do którego dołączony jest ten skrypt, a najlepiej zamień z rigidbody.velocity na rigidbody.AddImpulse(wertor_preędkości_pocisku), metoda ta od razu ustawi żądaną prędkość i nie zbuguje fizyki
- A najlepiej zamiast tworzyć nowy obiekt za każdym wystrzałem użyj Physics.Raycast(), a jeśli kula ma możliwość penetracji jakiejś przeszkody i dalszego lotu to .RaycastAll(). Metoda ta zwraca dane w co trafiłą w tej samej klatce, szybkie i pewne rozwiązanie w wypasku gier FPS.