Skocz do zawartości

Problem z lengthdir


PRT

Rekomendowane odpowiedzi

Witam, mam dość dziwny problem. Mam taki kod:

GML
//Obiekt wojo , Event step

if ruch=1

{

dis=distance_to_point(XX,YY) //dystans

diss=dis*procent/100 // procent

dir=point_direction(x,y,XX,YY) // kierunek

xxx=x+lengthdir_x(diss,dir)

yyy=y+lengthdir_y(diss,dir)

}

 

//Obiekt pokoj , Event Global Right Released

if global.wojo=1 //warunek

{

idda=instance_position(mouse_x,mouse_y,PROWY) //podlożenie idd obiektu pod idda

global.pokaz.XX=idda.x // podpisanie pod zmienna XX pozycji x obiektu idda

global.pokaz.YY=idda.y // j.w tyle że y.

global.pokaz.ruch=1 //reszta

global.pokaz.alarm[0]=global.pokaz.predkosc //reszta

}

 

Podałem te dwa kody bo gdzieś tu musi być jakiś błąd. Przy uruchomieniu programu, kiedy kliknę prawym przyciskiem , to wyskakuje błąd że nie znaleziono zmiennej x w Obiekcie pokoj, evencie Global right released. Chodzi o linię global.pokaz.XX=idda.x

 

Dopiero kiedy z tego pierwszego kodu

GML
xxx=x+lengthdir_x(diss,dir)

yyy=y+lengthdir_y(diss,dir)

usunę(o dziwo)

x+ i y+

czyli ozstanie

GML
xxx=lengthdir_x(diss,dir)

yyy=lengthdir_y(diss,dir)

 

błąd nie wyskakuje ale za to nie mam pożądanego efektu ;)

 

Naprawdę nie wiem co mam zrobić.

Z góry dziękuję za pomoc ;)

 

P.S Jeszcze działa kiedy zamiast (w lengthdir) diss i dir wpisze byle jakie liczby ;] ,ale to musi być uzależnione od zmiennych.

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze, nie rozumiem stosowania procentowego dystansu. Jak coś, co jest ciągiem zmierzającym od zera do nieskończoności, może być procentem? Doprowadziłoby to do sytuacji, w której dystans wynosiłby np 7157%... albo 0%. Procentowo można przedstawiać coś, co jest całością, wartość pomiędzy 0 a 100.

 

Wskazałem ci absurdalność, ty mi wskaż odpowiedź, a przyjrzę się kodowi.

 

EDIT: chyba wiem o co chodzi. W deklaracji zmiennej XX i YY sa to zmienne globalne pokaz.XX i pokaz.YY, a w obiekcie wojo, w wydarzeniu Step - odwołujesz się do jakichś nieistniejących zmiennych lokalnych XX i YY.

Odnośnik do komentarza
Udostępnij na innych stronach

Zastosowałem procent dla efektu ładowania się paska.

Wyświetlane są dwie linie węższa i szersza. Szersza ma długość np: 100 (ten współczynnik się zmienia)

A węższa stanowi jakiś procent długości pierwszej. procent dodawany jest co jakiś czas w alarmach aż do uzyskania 100% czyli długości szerszej linii.

 

Nie ma tego pokazanego w kodzie ;)

 

 

A co do twojego spostrzeżenia:

 

global.pokaz - zmienna przechowuje id obiektu wojo (jest ich kilka)

więc

global.pokaz.YY i global.pokaz.XX nie są globalne lecz lokalne w obiekcie o tymże id.

 

 

Kod błędu dla większego zobrazowania problemu ;p

GML
ERROR in

action number 1

of Mouse Event for Glob Right Released

for object pokoj:

 

Error in code at line 4:

global.pokaz.XX=idda.x

 

at position 23: Unknown variable x

Odnośnik do komentarza
Udostępnij na innych stronach

GML
global.pokaz.XX=idaa.x

adresowanie zmiennych globalnych ?? wiesz co, pierwszy raz o tym słyszę xD

 

global.pokaz.YY i global.pokaz.XX nie są globalne lecz lokalne w obiekcie o tymże id.

niesety, pisząc słówko global. a po nim nazwę, definiujemy zmienną globalną :blink: a pozatym dlaczego tu są aż dwie kropki ? całkowicie namieszałeś. Nie można od tak sobie w nazwie zmiennej stawiać kropki xD gdyż jest ona zarezerwowana do adresowania.

Odnośnik do komentarza
Udostępnij na innych stronach

@PRT:

GML
if global.wojo=1 //warunek

{

idda=instance_position(mouse_x,mouse_y,PROWY) //podlożenie idd obiektu pod idda

if ( idda != noone ) //ponoc instance_position jezeli nei ma obiektu na tej pozycji zwraca noone

{

global.pokaz.XX=idda.x // podpisanie pod zmienna XX pozycji x obiektu idda

global.pokaz.YY=idda.y // j.w tyle że y.

global.pokaz.ruch=1 //reszta

global.pokaz.alarm[0]=global.pokaz.predkosc //reszta

}

}

Misiek, co ty gadasz? Ja mam u siebie np.

GML
global.fightObj.x

i działa :P

 

Po prostu pod zmienną global.fightObj przechowuję id obiektu i odwołuję się do jego x :)

Odnośnik do komentarza
Udostępnij na innych stronach

GML
global.pokaz.XX=idaa.x

adresowanie zmiennych globalnych ?? wiesz co, pierwszy raz o tym słyszę xD

niesety, pisząc słówko global. a po nim nazwę, definiujemy zmienną globalną :blink: a pozatym dlaczego tu są aż dwie kropki ? całkowicie namieszałeś. Nie można od tak sobie w nazwie zmiennej stawiać kropki xD gdyż jest ona zarezerwowana do adresowania.

No przecież powiedział że global.pokaz zawiera ID instancji objektu wojo. Co oznacza, że on chce się odwołać do lokalnej zmiennej XX instancji, która ma id takie jak global.pokaz.

Odnośnik do komentarza
Udostępnij na innych stronach

@Misiek999

chyba dokładnie nie przeczytałeś. EDIT: za wolno pisałem :)

 

@Yoda

 

niestety istnieje tzn kiedy usunę te x+ i y+ jak napisałem w 1-szym poście to pod global.patrz mam normalnie id. Naprawdę mnie to zadziwia ;P

Odnośnik do komentarza
Udostępnij na innych stronach

@PRT:

troche edytowałem w tamtym poście więc napiszę jeszcze raz:

GML
if global.wojo=1 //warunek

{

idda=instance_position(mouse_x,mouse_y,PROWY) //podlożenie idd obiektu pod idda

if ( idda != noone ) //ponoc instance_position jezeli nei ma obiektu na tej pozycji zwraca noone

{

global.pokaz.XX=idda.x // podpisanie pod zmienna XX pozycji x obiektu idda

global.pokaz.YY=idda.y // j.w tyle że y.

global.pokaz.ruch=1 //reszta

global.pokaz.alarm[0]=global.pokaz.predkosc //reszta

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Dokładnie ;)

 

Wina tkwi teraz w linijce rysowania paska który ładuje się procentowo ;]

GML
draw_line_width_color(global.pokaz.x,global.pokaz.y,global.pokaz.xxx,global.pokaz.yyy,3,c_red,c_red)

 

Pewnie przez jakieś obliczenia z pierwszego postu , to już jakoś znajdę ;)

 

Dzięki Yoda.

 

 

Edit: dokładnie tu zamula diss=dis*procent/100 :P

a winą było że na początku procent=0 ;] dałem 1 i już śmiga

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ę...