Skocz do zawartości

Problem z pozycją wystrzału


Rekomendowane odpowiedzi

Mam taki problem, że przy wystrzale z armaty w lewo/prawo jest wszystko ok, tylko gdy strzelam w górę lub w dół to kula pojawia się w kole a nie w lufie. (Armata obraca się w strone kursora i pocisk leci też w stronę kursora) Na obrazkach mam nadzieje widać wyraźnie.

http://imgur.com/cKF3pt6,GPVTA8t#0

http://imgur.com/cKF3pt6,GPVTA8t#1

Odnośnik do komentarza
Udostępnij na innych stronach

Lengthdir_x i Lengthdir_y. Dodatkowo musisz ustawić origin sprite w środku. Jak nie rozumiesz jak tego użyć, napisz, a ja postaram się pomóc.

EDIT:

W sumie, jak lufa nie ma pełnego obrotu wystrzału, to nawet nie potrzebujesz tego lengthdir(). Po prostu jak masz instance_create(x, y, obj), to do x i y dodajesz jakieś zmienne, zależne od aktualnego obrotu. Chociaż lengthdiry, byłyby krótsze w użyciu o ile się nie mylę.

Odnośnik do komentarza
Udostępnij na innych stronach

A przepraszam, właśnie się dowiedziałem, że nie potrafię czytać ze zrozumieniem. No więc pomogę.

GML
var len = Odległość od środka działka, do miejsca w którym wychodzi kula

var dir=direction, czyli obrót twojego działka

instance_create(x+lengthdir_x(len, dir), y+lengthdir_y(len,dir), object);

Te zmienne len i dir, dałem dla większego zrozumienia. Zamiast zmiennych od razu wklep wartość.

Odnośnik do komentarza
Udostępnij na innych stronach

Po części się udało:

Kiedy się przesunę np. w górę i dopiero strzelę to pocisk wylatuje z lufy, ale jeśli się tylko obrócę i nie przesunę to pocisk wylatuje z miejsca innego niż lufa

Kod jaki mam aby obj_bullet się tworzył

if keyboard_check_pressed(vk_space)

{

instance_create(x+lengthdir_x(29,direction), y+lengthdir_y(29,direction),obj_bullet);

}

Odnośnik do komentarza
Udostępnij na innych stronach

Samo instance_create(), nie może sprawiać problemów. A gdzie masz ten kod wpisany?

Dodatkowo używaj alarmu, żeby nie spamiło tworzeniem instancji. Ja to zawsze robię w ten sposób. Robię specjalny alarm do wystrzału, a następnie

GML
if(alarm[0] == -1)

{

//kod na strzelanie

alarm[0]=60; // Ustawia licznik i dopóki nie minie tych 60 stepów, to nie można ponownie wystrzelić

}

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...