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

Unity 2D problem ze skyptem od strzelania

Object Storage Arubacloud
0 głosów
91 wizyt
pytanie zadane 13 grudnia 2023 w Systemy operacyjne, programy przez M4jk3l07 Początkujący (290 p.)

Witam!

Tworzę prostą grę w unity 2d w której sterujemy kwadratem po całej planszy. Kwadrat może iść do przodu skręcać (obracać się). Chciałem dodatkowo zrobić system strzelania. Udało mi się zrobić kod na to jednak jest mały problem. System strzelania robiłem z tego poradnika: https://www.youtube.com/watch?v=wkKsl1Mfp5M&t=11s tam gościu robi system strzelania ale w oparciu na kamerze pisząc moimi słowami z boku postaci, a ja tworzą z kamerą skierowaną na postać z samej góry.  W wyniku tego pocisk u mnie po wystrzeleniu leci cały czas w prawo, a nie tak jakbym chciał że leci w tą stronę w którą skierowany jest kwadrat, czyli prosto. Oto kod na przemieszczanie się pocisku:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{

    public float speed = 20f;
    public Rigidbody2D rb;

    // Start is called before the first frame update
    void Start()
    {
        rb.velocity = transform.right * speed;
    }

    
}

Jeśli ktoś wie jak zrobić aby pocisk leciał prosto, to będę wdzięczny.

2 odpowiedzi

0 głosów
odpowiedź 13 grudnia 2023 przez neo1020 Dyskutant (8,430 p.)
może zmień ? transform.right - na - transform.up ? nie wiem nie znam się
0 głosów
odpowiedź 15 grudnia 2023 przez womecm Nowicjusz (180 p.)
x = sin y = cos pobierz obrót ( ciekawe czy poprawnie to napisałem po polskiemu ) rotation of Your object. a następnie wykorzystaj go z użyciem sinusa i cosinusa aby "szczelić" we właściwym kierunku. Zapewne twój "kwodrot" obraca się aby zwizualizować kierunek w którym patrzy, przyjmijmy że kierunek w który patrzy określa oś Z ( jeśli robisz grę 3D ) Przyjmijmy że Z = 218* W tym przypadku potrzebujesz utworzyć sobie "wektor" z tej wartości obrotu. Potrzebujesz 2 wartosci. - 1 ) Jak dużo przesunąć się w osi X - 2) Jak dużo przesunąć się w osi Y X uzyskasz poprzez x = sin( 218 ); y = cos( 218 ); oczywiście zamiast korzystać z 218 skorzystaj z aktualnego obrotu kwadratu. x = sin( Kwadrat.RotationZ ); Nie pamiętam czy funkcje trygonometryczne Unity korzystają też z radianów ale jeśli to swoje "Z" przemnóż przez... o ile mnie pamięć nie myli 0.0017444 x = sin ( Kwadrat.RotationZ * 0.0017444 ); y = cos ( Kwadrat.RotationZ * 0.0017444 ); sinus i cosinus w tym przypadku będą zwracać wartość pomiędzy -1 a 1 Aby uzyskać większy wektor możesz przemnożyć go przez jakąś wartość. x = sin( Kwadrat.RotationZ * 0.0017444 ) * Speed; y = sin( Kwadrat.RotationZ * 0.0017444 ) * Speed; potem zrób wektor z tego X i Y o przesuń "pocisk" o ten wektor. "Mondrala" pan neo1020 ( celowo z małych ) - poziom Stack Overflow. ogólnie jak chcesz uzyskać "punkt" na okręgu możesz po prostu użyć sin i cos...

//Edit:

Człowiek dodaje entery i pracuje nad odpowiedzią a potem cała odpowiedź i tak jest rozwalona przez skrypt... GJ.

Podobne pytania

0 głosów
0 odpowiedzi 702 wizyt
pytanie zadane 16 stycznia 2020 w C# przez Wungiel Nowicjusz (140 p.)
0 głosów
0 odpowiedzi 215 wizyt
0 głosów
1 odpowiedź 1,339 wizyt
pytanie zadane 21 listopada 2017 w OpenGL, Unity przez Eryk Chojnacki Obywatel (1,420 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

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

...