Mateusz Nejman Opublikowano 7 Grudnia 2013 Udostępnij Opublikowano 7 Grudnia 2013 Witajcie! Wiem, że to banalny problem, ale ja nie wiem, jak go rozkminić. Mam 2 obiekty: o_Prad i o_Amperomierz I jak zrobić, żeby jak prąd miał kolizje z amperomierzem to zmienna ladunek w amperomierzu zwiększyła się o 1, a jak już prąd nie będzie w kolizji z amperomierzem to ladunek zmniejsza się o 1. Nie mam bladego pojęcia jak to zakodować. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 7 Grudnia 2013 Udostępnij Opublikowano 7 Grudnia 2013 Niech Amperomierze co stepa najpierw resetują wartość do 0 a potem sprawdzają czy prąd koliduje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 7 Grudnia 2013 Autor Udostępnij Opublikowano 7 Grudnia 2013 Nie do końca rozumiem, ale zapomniałrm wspomnieć, że przez o_Amperomierz na raz przepływa kilka obiektów o_prad Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 7 Grudnia 2013 Udostępnij Opublikowano 7 Grudnia 2013 No domyślam się i nadal ten pomysł będzie dobry. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 7 Grudnia 2013 Udostępnij Opublikowano 7 Grudnia 2013 kazdy prod wstepujoc do ampermietra moze zapisac swe id w datowej strukrurze( polecam queue) ampermierz tylko policzy wszystkie objekty wedlog ich id mozna zatem zrobic inne wartosti produ dla roznych objektow ipt. :) moze pokaze szybki przyklad GML Information about object: o_hrac Sprite: sprite0 Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _action=false; Step Event: execute code: if (place_meeting(x,y, o_nepritel) && !_action) { ds_queue_enqueue( o_nepritel._amperid, id); _action=true; }; if (!place_meeting(x,y, o_nepritel) ) {_action=false; }; Mouse Event for Left Button: execute code: x=mouse_x; y=mouse_y; ______________________________________________________ Information about object: o_nepritel Sprite: sprite1 Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _amperid=ds_queue_create(); _amper=0; Step Event: execute code: // _amper=0; for( iti=0; iti<ds_queue_size(_amperid); iti+=1){ _idn=ds_queue_dequeue(_amperid); if(instance_exists(_idn)){ if place_meeting(x, y, _idn){ _amper+=1; ds_queue_enqueue(_amperid, _idn); }; }; }; Mouse Event for Glob Middle Released: execute code: instance_create(mouse_x, mouse_y, o_hrac); Draw Event: execute code: draw_sprite_ext(sprite_index,-1,x,y,1,1,0,c_white,1); draw_text(x,y-30, "amper="+string(_amper)+" ilosc _amperid v queue="+string(ds_queue_size(_amperid)) ); o_hrac= prod o_nepritel= ampermetr Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 7 Grudnia 2013 Autor Udostępnij Opublikowano 7 Grudnia 2013 Czy to mniej więcej tak ma wyglądać GML ladunek=0 if collision_meeting(x,y,o_Prad,0,0) { ladunek+=1 } EDIT: za długo pisałem i nie zauważyłem kodu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 7 Grudnia 2013 Udostępnij Opublikowano 7 Grudnia 2013 step: GML ladunek=0 with(o_prad) if collision_point(x,y,other.x,other.y,0,1) other.ladunek+=1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 8 Grudnia 2013 Autor Udostępnij Opublikowano 8 Grudnia 2013 ereg, jest mały problem: według twojego przykładu o_Prad przy kolizji z o_Amperomierz(których są kilka) dodaje _amper i _amperid tylko do jednego Amperomierza. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 8 Grudnia 2013 Udostępnij Opublikowano 8 Grudnia 2013 proste rozwiozanie :) kazdy ampermetr ma swoj queue a id( od queue) jest w _amperid w objektu ampermetra wystarczy przy kolizji produ z ampermetrem zapisac id produ do id wlasciwego ampermetra. cos w tym stylu GML Information about object: o_hrac Sprite: sprite0 Solid: false Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Create Event: execute code: _action=false; Step Event: execute code: _idamp=instance_place(x,y, o_nepritel); //if (place_meeting(x,y, o_nepritel) && !_action) { if (_idamp && !_action) { //ds_queue_enqueue( o_nepritel._amperid, id); ds_queue_enqueue( _idamp._amperid, id); _action=true; }; //if (!place_meeting(x,y, o_nepritel) ) {_action=false; }; if (!_idamp ) {_action=false; }; Mouse Event for Left Button: execute code: x=mouse_x; y=mouse_y; troche wypolerowalem kod od zbednych testow instance :thumbsup: EDIT: queue jest bardzo wydajne. jesli bedzie duuuzo prod objektow, to niespowalnia bieg programu u mnie dopiero przy 2000 instancjach zwolnil z 90fps na 59fps Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 8 Grudnia 2013 Autor Udostępnij Opublikowano 8 Grudnia 2013 Dzięki Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
szavi3r Opublikowano 23 Grudnia 2013 Udostępnij Opublikowano 23 Grudnia 2013 I poradziłeś sobie ze swoim problemem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 23 Grudnia 2013 Autor Udostępnij Opublikowano 23 Grudnia 2013 Poradziłem sobie i tym sposobem zrobiłem amperomierze, woltomierze, rezystory i równomierne rozejście się na skrzyżowaniach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę