Skocz do zawartości

Milord

Użytkownicy
  • Postów

    30
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Milord

  1. Cześć wszystkim mam taki problem z ruchomym głównym tłem.

     

    Może wyjaśnię o co dokładnie mi chodzi.

     

    mam trzy tła background1 bacground2 background3

     

    Każde z nich ma takie same wymiary czyli 2096x1536

     

    Tło background3 to sceneria na której są solidy nałożone

    Tło Background2 to statyczne tło na których widać bliższe elementy

    Tło background1 to ruchome tło w oddali z delikatnym blurem

     

    Viewa mam ustawionego na 800x500

     

    I teraz chciałbym ustawić żeby te tło background1 poruszało się przy ruchu gracza góra,dół,lewo prawo...

     

    próbowałem już w stepie bohatera różnych ustawień np:

     

    GML
    background_x[0] = view_xview[0]/5; // różne cyfry wstawiałem

    background_y[0] = view_yview[0]/5;// różne cyfry wstawiałem

     

     

    Efekt jest taki,że jak chodzę bohaterem,to te tło dziwnie się porusza,np jak mam w oddali krajobraz,to przy poruszaniu ten krajobraz opada nie widać go,jest potem w innym miejscu,a w miejscu krajobrazu jest inna część tła z całości.

    Jak np wyłączę ruchome tło,to krajobraz wszystko ładnie jest dopasowane,no,ale nie ma efektu poruszającego się tła.

    Kiedyś miałem ustawione tło ruchome o identycznych rozmiarach co view i było ok,a teraz ma view inny i tło większe,bo chciałem żeby to lepiej wyglądało...

    Kurcze walczę z tym już jakiś czas i nie wiem jak to ustawić żeby było dobrze.

    Statycznie jest dobrze jak ładnie to wygląda,ale wtedy brak efektu głębi poruszania się tła..

    Nie mam już pomysłu na to..

     

    proszę pomóżcie

     

     

    Game Maker Studio Pro.

  2. Aj,bo się zamotałem jak chłop w sądzie;)tego nie mam mam to Hmmm sumują mi się punkty w poszczególnych levelach pierwszego świata,ale mam na myśli tak jak mowie Maxiu;) że statystyka nie że się wyświetli na końcu każdego levelu,tylko dopiero na końcu 4 levelu;)

     

    czyli muszę chyba w draw narysować tabelke z podsumowaniem wyników..że tyle mam pkt tyle zabitych wrogów tyle monet..;)

     

     

    w create dałem tam tak;)

     

    GML
    global.Zabitych[0]=0;

    global.Zabitych[1]=0;

    global.Zabitych[2]=0;

    global.Zabitych[3]=0;

    //global.pScore[1]=ilosc_punktow;// ilosc punktow wpisuje 0; ??

    sa 4 plansze to żeby podsumował mi je wszystkie,ale wyświetlił je jak skończe czwartą plansze tą stytystykę

     

     

    we wrogach tam gdzie giną dałem ta linijkę

     

    obj_bandyta

     

    GML
    global.Zabitych[0]++;

     

     

    obj_nerwus

     

    GML
    global.Zabitych[1]++;

     

     

    Ps.Diamenty i inne pierdołu ja już ogarnę,na wzór przecież mam tablice z wrogami;)

    Chodzi mi głównie o punkty i ilość zabitych wrogów,gdzie wyświetli mi się to na końcu 4 planszy jak już ją skończe;)

    czyli coś w draw musze stworzyć taką tabelkę,gdzie w osobnym roomie wyświetli mi się ta stystyka,a potem będę mogł spokojnie przejść do świata drugiego;)

    Teraz Max von Gammer rozumie mnie;D?

  3. W tym samym, nie ma potrzeby tworzenia nowego ;)

    W level wpisuj lepiej nr. levelu.

    Np. dla level 1 teorytycznie robisz:

    GMLglobal.pScore[1]

    I może tak być jak wyżej, ale jeszcze lepiej jak zrobisz:

    GMLglobal.pScore[0] /*0 dlatego że indeksuje się tablice od 0, więc zaczynając od 1 marnujemy cenny element.

    Wyliczasz to w prosty sposób, musisz cofnąć o 1 do tyłu, czyli odejmujesz jeden.

    W skrócie w nawias kwadratowy wpsujesz numer levelu-1 */

    W prawdzie powinno działać także jakbyś podał nazwę roomu(bo nazwa zwraca tak na prawdę ID zasobu które jest liczbą), ale ominąłbyś prawdopodobnie wiele elementów pozostawiając je pustymi i byłby problem z wyświetlaniem(musiałbyś sprawdzać ID danego roomu). Ale to nie istotne nie chce Ci mieszać w głowie. Po prostu wpisujesz nie nazwę roomu tylko numer levelu(liczbę)-1 ;)

    GMLglobal.pScore[numer_levelu-1]=ilosc_punktow;

     

     

     

    Maxiu już mi trochę namieszałeś;) dobra próbuje to złożyć w jedną całość;) robie w create obj game controller tak;)

     

    dodaje do istniejących zmiennych to:

     

    create

     

    GML
    global.pScore[-1]//jak dam -1 to znaczy,że podsumuje mi wszystkie pkt z lewelu już skończonego

    global.Zabitych[0]=0; //Pierwszy typ

    global.Zabitych[1]=0; //Drugi typ

    global.Zabitych[2]=0; //Trzeci typ

    global.Zabitych[3]=0;//czwarty typ</span></span>

     

    Teraz tak..to zostaje w tym obiekcie global game controller

     

    no i tworze sobie nowy room..i teraz w nim chce żeby wyświetliło mi się podsumowanie..

    Max;) czyli mi tylko chodzi,że mając 4 levele chce żeby dopiero po 4 levelu wyskoczyło info w postaci nowej planszy o ilości zabitych wrogow,zdobytych punktow i ilosci zebranych monet.

    Nie musi mi co ukończona plansza pokazywać tą statystykę,tylko co ukończony każdy świat;) a światy mam podzielone na 4 plansze;)

     

    czyli wtedy robi tak

     

    global.pScore[-4] // o ile to dobrze zrozumiałem;)

     

    a nazwy leveli mam takie;)

     

    room_world1_4

    room_world2_4

    room_world3_4

    room_world4_4

     

    i po pokoju room_world4_4 niech pojawi się ta statystyka przed światem kolejnym czyli room_world2_1 statystyka hmmm może być w osobnym roomie.

    A wrogowie nazywają się następująco

     

    obj_bandyta

    obj_nerwus

    obj_czolg

    obj_smok

  4. No tak, robisz np. drugą tablice GMLglobal.Punkty[level]=ilość punktów;

    Swoją drogą możesz zrobić to optymalniej ciut na dwumiarowej tablicy i wtedy:

    GMLglobal.Podsumowanie[rodzaj, typ/level] = wartość;

    I jako rodzaj podajesz sobie np.:

    dla podsumowania zabitych - 0,

    dla podsumowania punktów - 1;

    W drugim miejscu(jako drugi wymiar) podajesz typ npc-ta/numer levelu.

    Szczególnie może się przydać jak chcesz potem zrobić jeszcze podsumowanie np.: diamentów zebranych, czasu przejścia danego levela itp. i musiałbyś tworzyć kilka zmiennych jedno wymiarowych ;)

     

    hmmm...powolutku Max von Gamming;)

     

     

    a,wiec tak

     

    w create obiektu tam,gdzie mam już definiowane zmienne wrzucam;)

     

     

    GML
    global.Zabitych[0]=0; //Pierwszy typ

    global.Zabitych[1]=0; //Drugi typ

    global.Zabitych[2]=0; //Trzeci typ

    global.Zabitych[3]=0;//czwarty typ

     

    dobra i teraz drugą tablice tworze w nowym obiekcie,czy w tym samym?

     

    global.pScore[level]=ilość punktów;// tu wpisuje nazwę pokoju w levelu?

     

     

    Tylko jak to wyświetlić w osobnym roomie;)?

  5. No to dajesz tam gdzie definiujesz punkty życia itp.:

    GMLglobal.Zabitych[0]=0; //Pierwszy typ npc

    global.Zabitych[1]=0; //Drugi typ npc

    global.Zabitych[2]=0; //Trzeci typ npc

    global.Zabitych[3]=0; //Czwarty typ npc

    Czyli definiujesz tablicę globalną w której będziesz zliczał zabitych npc-tów ;)

    Później przy śmierci npc-ta dajesz:

    GMLglobal.Zabitych[typ]++;

    Czyli doliczasz zabitego i potem sobie rysujesz sobie poszczególne elementy tablicy global.Zabitych ;)

     

     

    Dzięki Max to dla mnie zrozumiałe;) ok sprawa wrogów załatwiona;) analogiczie to samo robie z punktami;)?

    Tak żeby w osobnym roomie po ukończeniu wszystkich 4 roomów podsumowanie mi wyskoczyło,czyli ile punktów,ile zabitych wrogów itd;)

  6. Cześć wszystkim

     

    mam świat,który składa się z 4 plansz..Ostatnia plansza,to walka z bossem,no i teraz jak unicestwię bosa i przechodzę do kolejnego świata,to za nim do kolejnego świata przejdę chciałbym zrobić podsumowanie punktów,czyli wskakuje plansza z podsumowaniem ukończonego świata informacje ile mamy zebranych punktów ile zabiliśmy wrogów,ile monet zebraliśmy o takie coś....

     

    zmienne mam globalne czyli:

     

    mam w create obiektu game_controller

     

     

    GML
    global.pScore = 0;

    global.life = 5;

    global.coins = 0;

    global.Saved = true;

    globalvar spawnX, spawnY;

     

     

    gorzej z podsumowaniem ilości zabitych wrogów;) w danym świecie

  7. Cześć wszystkim posłużyłem się tutaj przykładem kolegów odnośnie wyświetlania tabelki w menu:

    I mam takie pytania do tego tematu:

     

    Wchodzę do menu,gdzie umieściłem sobie obiekt tabelka_highscore,wpisuje imię i jest pusto.

    Rozumiem,że to oczywiste,no bo przecież trzeba jeszcze zmienną utworzyć w obiekcie,gdzie mam życia,punkty,hud itp,i wtedy domyślam się,że się wyświetli lista wyników w menu gry po ukończeniu planszy,czy utracie żyć..

    Dokładnie chciałbym tak,że jak uzyskam już jakieś tam punkty w grze no i np zginę,to żeby wyświetlił mi się możliwość wpisu swojego imienia i ta tabelka co w menu,ale to musiałaby się wyświetlić przed planszą game over,no chyba,że wpis najlepszych 7 graczy będzie zapełniony,a mój wynik będzie zbyt mały żeby dokonać wpisu to się nie wyświetli i nie dokona się wpis.

     

    kod na tą tabelkę w menu,gdzie wchodzę i wyświetlać ma się lista najlepszych graczy

     

    obj_tabelka_highscore

    Create

     

     

    GML
    // tworzenie tabelki z wynikami

    // ilosc wynikow

    global._max = 7;

    _sx = "ile";

    _sy = "nick";

     

    if ( !file_exists( 'high.txt' ) )

    {

    ini_open( 'high.txt' );

     

    for( _i = global._max - 1; _i >= 0; _i -= 1; )

    ini_write_string( _sx, string( _i ), "0" );

    for( _i = global._max - 1; _i >= 0; _i -= 1; )

    ini_write_string( _sy, string( _i ), "brak" );

     

    ini_close();

    }

     

    ini_open( 'high.txt' );

     

    for( _i = global._max - 1; _i >= 0; _i -= 1; )

    global.l[_i] = real( ini_read_string( _sx, string( _i ), "0" ) );

    for( _i = global._max - 1; _i >= 0; _i -= 1; )

    global.n[_i] = ini_read_string( _sy, string( _i ), "brak" );

     

    ini_close();

     

    // punkty

    global.pScore = score;

     

    // podawanie nicka

    _nick = get_string( "Podaj nick:", "Pioter" );

     

    // dodawanie wyniku

    if ( global.pScore ) && ( global.pScore > global.l[global._max - 1] )

    {

    for( _i = global._max - 2; _i >= 0; _i -= 1; )

    {

    if ( global.l[_i] >= global.pScore ) || ( !_i && global.pScore >= global.l[0] )

    {

    if ( _i ) || ( !_i && global.pScore <= global.l[0] )

    _i += 1;

     

    for( _j = global._max - 1; _j > _i; _j -= 1; )

    {

    global.l[_j] = global.l[_j - 1];

    global.n[_j] = global.n[_j - 1];

    }

     

    global.l[_i] = global.pScore;

    global.n[_i] = _nick;

     

    break;

    }

    }

    }

     

    // zapis tabelki

    ini_open( 'high.txt' );

     

    for( _i = global._max - 1; _i >= 0; _i -= 1; )

    ini_write_string( _sx, string( _i ), string( global.l[_i] ) );

    for( _i = global._max - 1; _i >= 0; _i -= 1; )

    ini_write_string( _sy, string( _i ), global.n[_i] );

     

    ini_close();

     

     

    Draw

     

    GML
    for ( _i = 0; _i < global._max; _i += 1; )

    {

    draw_set_color( c_blue );

    draw_set_halign( fa_right );

    draw_text( x + 250, y + 20 * _i, global.l[_i] );

    draw_set_halign( fa_left );

    draw_text( x, y + 20 * _i, global.n[_i] );

    }

     

    no i teraz tak obiekt w którym mam zmienne punkty,życia itp ,oraz hud.

     

    obj_game_controller

     

    Create

     

    GML
    //Ustawienia globalne

    image_speed = 0;

     

    global.watch = 0; //ustawiamy globalnie na 0 w celu ich dalszego sumowaniu umozliwjajacego przejscie do nastepnej planszy po zebraniu ich odpowiedniej ilosci

    global.pScore = 0;

    global.life = 5;

    global.coins = 0;

    global.Saved = true;

    globalvar spawnX, spawnY;

     

    //Widok

    globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY;

    gvX = view_xview[0];

    gvY = view_yview[0];

    gvW = view_wview[0];

    gvH = view_hview[0];

    gvObj = view_object[0];

    gvOffX = 0;

    gvOffY = 0;

     

    //HUD

    hpHUD = 0;

    maxHpHUD = 0;

     

     

    tu step mojego bohatera

     

    GML
    if(instance_number(obj_napis_plansz)=0)// zatrzymuje sprita bohatera na czas wyswietlenia napisu Stage

    {

     

     

     

    if (vspd > 25) //Jesli predkosc spadania jest szybsza niz 25 (Mozna dowolnie zmieniac ta wartosc.)

    {global.damage+=4} //Zwiekszenie obrazen o wartosc 1. (Zmienienie liczby na wieksza zwiekszy zadawane obrazenia po upadku.)

    if not place_free(x,y+1) //Jesli w poblizu nas jest jakis obiekt rowniez zostana zadane obrazenia

    {

    other.hp-=global.damage //Odejmujemy punkty zycia od wartosci zadanych obrazen.

    global.damage=0 //Resetujemy zadawanie obrazen po uderzeniu w ziemie by nie zabieralo go wiecej

    }

    else if (vspd >35)

    {

    other.hp = -100; //natychniastowa smierc po upadku z ogromnej wysokosci

    }

     

     

    //Upadek z ogromnej wysokosci zabiora zycie,gdy energia osiagnie wartosc zero

    if( hp <= 0 )

    {

    hp = 100;

    global.life -= 1;

    audio_play_sound(dzwiek_bohater_ginie, 1, false);

    x = start_x;

    y = start_y;

    }

     

    if( global.life <= 0 )

    {

    room_goto(rm_game_over); //pokoj,gdzie ma sie akcja gry przeniesc po koncu gry

    }

     

    ///Kontrola

    if !place_meeting(x,y,obj_water) {

    //Normalny ruch

    if climbing == false {

    if keyboard_check_pressed(kJump) && inAir == false {

    vspd = -10-sign(pwrupJmp*3);

    jumpStr = 3;

    //Zeskakiwanie w dol

    if keyboard_check(kDown) && place_meeting(x,y+1,par_solid_ghost) {

    y += 4;

    vspd = 0;

    jumpStr = 0;

    jumpTimes = 0;

    }

    } else if keyboard_check(kJump) && jumpStr > 0 {

    audio_play_sound(dzwiek_skoku_bohatera, 1, false); //odtwarzamy dzwiek przy skakaniu

    vspd -= 2+sign(pwrupJmp);

    jumpStr--;

     

    } else {

    if keyboard_check_released(kJump) && jumpStr > 2 {

    vspd += 2+sign(pwrupJmp);

     

    }

    jumpStr = 0;

    }

     

    if keyboard_check(kAction) && attClock == false {

    if keyboard_check(kDown) {

    attClock = 16;

    curAttack = 1;

    with instance_create(x,y-16,obj_projectile) {

    hspd = other.image_xscale*10;

    vspd = 0; //lekko do gory -4 //mocno do gory

    g = .0; //0.2 tor lotu paraboliczny

    owner = par_player;

    strength = 0;

    explode = true;

    explosionRadius = 30;

    explosionStrength = 2+(sign(other.pwrupStr)*8);

    //image_blend = c_black; //kolor lotu pocisku

    audio_play_sound(dzwiek_bohater_strzela, 1, false); //odtwarzamy dzwiek przy strzelaniu

    }

    } else {

    attClock = 18;

    curAttack = 0;

    with instance_create(x,y,par_attack) {

    sprite_index = mask_player_attack;

    image_xscale = other.image_xscale;

    owner = par_player;

    strength = 1+(sign(other.pwrupStr)*4);

    }

    }

    }

     

    if keyboard_check(kRight) && !keyboard_check(kLeft) {

    if hspd < 10+(sign(pwrupSpd)*5) {

    hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5));

    }

    image_xscale = 1;

    }

    if keyboard_check(kLeft) && !keyboard_check(kRight) {

    if hspd > -10-(sign(pwrupSpd)*5) {

    hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5));

    }

    image_xscale = -1;

    }

     

    //Wspinanie sie

    if place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+32,par_climbable) && attClock <= 0 && (keyboard_check(kUp) || keyboard_check(kDown)) {

    climbing = true;

    vspd = 0;

    hspd = 0;

    }

    }

    //Wspinanie sie

    if climbing == true {

    var __hsign = keyboard_check(vk_right)-keyboard_check(vk_left);

    var __vsign = keyboard_check(vk_down)-keyboard_check(vk_up);

     

    hspd = min(max(hspd+__hsign,-2),2);

    vspd = min(max(vspd+__vsign*2,-4),4);

     

    if __vsign == -1 && !place_meeting(x,y-32,par_climbable) {

    climbing = false;

    vspd = -10;

    }

     

    if __hsign != 0 {

    image_xscale = __hsign;

    }

     

    if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable) {

    climbing = false;

    }

    }

     

    }

     

    else {

     

     

    //Plywanie

    swimDir = point_direction(0,0,keyboard_check(kRight)-keyboard_check(kLeft),keyboard_check(kDown)-keyboard_check(kUp));

    if abs(keyboard_check(kRight)-keyboard_check(kLeft))+abs(keyboard_check(kDown)-keyboard_check(kUp)) != 0 {

    hspd += lengthdir_x(.5,swimDir);

    if !(swimDir > 0 && swimDir < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) {

    vspd += lengthdir_y(.5,swimDir);

    }

    }

    if keyboard_check(kUp) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { //plywanie do gory

    vspd = -12;

    }

    }

    }

     

     

    a tu kod kolizji gracza z przykładowym wrogiem..

     

    obj_wrog

     

    GML
    ///Obrazenia jakie wrog zadaje bohaterowi

    if !vspd > 0 && hurtClock == 0 && other.hurtClock == 0 && sign(x-other.x) == other.image_xscale {

    hp -= 15;

    hurtClock = room_speed;

    vspd = -8;

    hspd = sign(x-other.x)*16;

    }

     

    if( hp <= 0 )

    {

    hp = 100;

    global.life -= 1;

    x = start_x;

    y = start_y;

    }

     

    if( global.life <= 0 )

    {

    room_goto( rm_game_over ); //pokoj,gdzie ma sie akcja gry przeniesc po koncu gry

    }

  8. Jeżeli zrobimy to "po staremu", bez persistant to:

    1. Usuń(wytnij) definiowanie zmiennych z create tego obiektu który zajmuje się też HUD itp..

    2. Stwórz nowy, pusty obiekt i postaw go tylko w pierwszej planszy.

    3. Wklej w jego create(tego nowego obiektu) definicje zmiennych.

    Lub wersja która powinna być ciut bardziej optymalna:

    1. Usuń(wytnij) definiowanie zmiennych z create tego obiektu który zajmuje się też HUD itp..

    2. Wejdź w room z pierwszą planszą.

    3. Zakładka Settings>Creation Code

    4. Wklej tam kod definicji zmiennych.

    4.1. Nie powtarzaj dla innych roomów! Czyli wklejasz to w creation code tylko pierwszego levelu ;)

     

    Persistant możesz odznaczyć, bo nie wiem jak ono wpływa na instancje. Podejrzewam, że może działać tylko wewnątrz danego roomu, jakbyś chciał do niego powrócić to instancja zachowa swoje właściwości wtedy. Ale to tylko podejrzenia, a żeby wiedzieć na pewno trzeba poczytać dokumentację ;p Dla pewności, więc odznacz lepiej, chyba że Ty wiesz jak dokładnie to działa i to wykorzystujesz..

     

     

    no dobra to z tego globalnego obiektu kontroler wycinam tylko definiowanie zmiennych,a reszte zostawiam bez zmian łącznie z hud itp elementami;D?

     

    czekaj podeśle Ci kod całego mojego obiektu kontroler

     

     

    Create

     

    GML
    ///Ustawienia globalne

    image_speed = 0;

     

    global.watch = 0; //Ustawiamy globalnie na 0 w celu ich dalszego sumowaniu umozliwjajacego przejscie do nastepnej planszy po zebraniu ich odpowiedniej ilosci

    global.pScore = 0;

    global.life = 5;

    global.coins = 0;

    global.Saved = true;

    globalvar spawnX, spawnY;

    ///Widok

    globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY;

    gvX = view_xview[0];

    gvY = view_yview[0];

    gvW = view_wview[0];

    gvH = view_hview[0];

    gvObj = view_object[0];

    gvOffX = 0;

    gvOffY = 0;

     

    ///HUD

    hpHUD = 0;

    maxHpHUD = 0;

     

     

    End step

     

    GML
    ///Widok

    if view_wview[0] != gvW || view_hview[0] != gvH {

    var tempW, tempH;

    tempW = view_wview[0];

    tempH = view_hview[0];

     

    if gvW/view_wport[0] >= gvH/view_hport[0] {

    view_hview[0] = lerp(view_hview[0],gvH,.3);

    view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0];

    } else {

    view_wview[0] = lerp(view_wview[0],gvW,.3);

    view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

    }

     

    view_xview[0] -= (view_wview[0]-tempW)/2;

    view_yview[0] -= (view_hview[0]-tempH)/2;

    }

     

    if view_wview[0] > room_width {

    view_wview[0] = room_width;

    view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0];

    }

    if view_hview[0] > room_height {

    view_hview[0] = room_height;

    view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0];

    }

     

    if instance_exists(gvObj) {

    gvX = min(max(0,gvObj.x+gvOffX-view_wview[0]/2),room_width-view_wview[0]);

    gvY = min(max(0,gvObj.y+gvOffY-view_hview[0]/2),room_height-view_hview[0]);

     

    gvOffX = 0;

    gvOffY = 0;

    }

     

    view_xview[0] = round(min(max(0,lerp(view_xview[0],gvX,.15)),room_width-view_wview[0]));

    view_yview[0] = round(min(max(0,lerp(view_yview[0],gvY,.15)),room_height-view_hview[0]));

     

    gvW = gvWStart;

    gvH = gvHStart;

     

    //Tła

    /*for(i=0;i<8;i++) {

    if background_visible == true || background_foreground == true {

    //Horizontal

    if background_width != room_width {

    background_x = view_xview[0]/(room_width-view_wview[0])*(room_width-background_width);

    }

    //Vertical

    if background_height != room_height {

    background_y = view_yview[0]/(room_height-view_hview[0])*(room_height-background_height);

    }

    }

    }</span>

     

     

     

    room start

     

    GML
    ///Widok

    globalvar gvXStart, gvYStart, gvWStart, gvHStart, gvObjStart;

    gvXStart = view_xview[0];

    gvYStart = view_yview[0];

    gvWStart = view_wview[0];

    gvHStart = view_hview[0];

    gvObjStart = view_object[0];

     

    if instance_exists(gvObj) {

    view_xview[0] = min(max(0,gvX),room_width-view_wview[0]);

    view_yview[0] = min(max(0,gvY),room_height-view_hview[0]);

    }

     

    Draw GUI

     

    GML
    /// Wyswietlamy HUD gracza

     

    draw_set_color(c_white);

    draw_sprite(spr_mniejszy_hud,1,50,64);

     

     

     

    var __guiW = display_get_gui_width(), __guiH = display_get_gui_height();

     

     

     

     

     

    //punkty czyli score wysrodkowalem to na HUD

    draw_set_color(c_white);

    draw_set_valign(fa_middle);

    draw_set_halign(fa_center);

    draw_set_font(fn_punkty);

    draw_sprite(spr_score,1,310,30);

    draw_text(310,75,"$"+string(global.pScore));

     

     

     

    // Zegarki rozmieszczenie spritow i liczb

    draw_set_color(c_white);

    draw_set_valign(fa_middle);

    draw_set_halign(fa_center);

    draw_set_font(fn_punkty);

    draw_sprite(spr_watch,1,500,30);

    draw_text(480, 75,string(" " + string(global.watch)));

     

    // Rozmieszenie monet

    draw_set_color(c_white);

    draw_set_valign(fa_middle);

    draw_set_halign(fa_center);

    draw_set_font(fn_punkty);

    draw_sprite(spr_coins,1,400,30);

    draw_text(400, 75, string(" " + string(global.coins)));

     

     

     

    //HP HUD

    if instance_exists(par_player) {

    hpHUD = lerp(hpHUD,par_player.hp,.5);

    maxHpHUD = par_player.maxHp;

     

     

    //HUD dopalaczy

    with obj_player {

    var _offset;

    _offset = 0;

     

    draw_set_font(fnt_pwrup);

    draw_set_valign(fa_bottom);

    draw_set_halign(fa_center);

    draw_set_color(c_white);

    draw_texture_flush();

     

    if pwrupSpd > 0 {

    draw_sprite_ext(spr_pwrup_speed,0,__guiW-26,29+35*_offset,1,1,0,c_gray,.5);

    draw_text(__guiW-26,29+35*_offset,string(ceil(pwrupSpd/room_speed)));

    _offset++;

    }

    if pwrupStr > 0 {

    draw_sprite_ext(spr_pwrup_strength,0,__guiW-26,35+35*_offset,1,1,0,c_gray,.5);

    draw_text(__guiW-26,35+35*_offset,string(ceil(pwrupStr/room_speed)));

    _offset++;

    }

    if pwrupJmp > 0 {

    draw_sprite_ext(spr_pwrup_jump,0,__guiW-26,28+35*_offset,1,1,0,c_gray,.5);

    draw_text(__guiW-26,28+35*_offset,string(ceil(pwrupJmp/room_speed)));

    _offset++;

    }

    }

    } else {

    hpHUD = lerp(hpHUD,0,.5);

    }

     

    //HUD zycia

     

    draw_sprite_part(spr_hp_bar,1,1,0,180/maxHpHUD*hpHUD,130,90,14);

    draw_set_color(c_white);

    draw_set_valign(fa_middle);

    draw_set_halign(fa_center);

    draw_set_font(fn_punkty);

    draw_text(110, 74, string("x" + string(global.life))); //rozmieszczenie wskaznika zyc

    draw_sprite(spr_glowa,1,40,1); //sprite glowy bohatera przy pasku zycia</span>

     

     

    teraz tak jak mówisz tworze pusty obiekt bez persistant nazywam go np global_zmienne

     

    wycinam z create zmienne z tamtego starego obiektu,ale zostawiam tamten stary obiekt w pierwszym roomie..

    No i teraz wklejam do create tego nowego obiektu bez persistant w create te zmienne..i potem wchodzę w ustawienia pokoju pierwszego i w creacion code wklejam to samo co w create w nowym obiekcie tak?;) tak to zrozumiałem

  9. Obiekt zapewne masz w każdym roomie? W create jeżeli dałeś to life będzie miało z powrotem wartość 5 CO CREATE OBIEKTU, czyli przy starcie każdego roomu który ten obiekt zawiera ;) Daj to w game start, albo ew. zrób osobny obiekt który będzie tylko w pierwsze planszy ;) Kolejną opcją jest też np create code PIERWSZEGO roomu-levelu :)

     

    @e: dobra, nie wiem do końca jak działa persistant obiektu, teraz dopiero doczytałem. To ciekawe trochę, bo niby w każdym roomie masz inną instancję tego obiektu :/

    W każdym bądź razie wychodzi na to, że jestem nie douczony, bo kiedyś tylko roomy mogły być presistant, a nowości dopiero staram się nadrobić :P

    Jedyne co mogę podpowiedzieć w takim razie to spróbuj zrobić to "staromodnie", bo przy persistant obiektu niestety zbyt wiele nie pomogę, bo dopiero teraz z Twojego postu się dowiedziałem, że takie coś istnieje xD Widzę, że muszę jeszcze wiele nowości nadrobić, choć z drugiej strony ja po prostu chyba wolę robić to starymi, sprawdzonymi metodami jeżeli nie wpływa to jakość specjalnie źle na optymalizację ;p

     

     

    Tak wszędzie ma ten obiekt w każdym pokoju

    No tak persistant,ale zawsze mogę odznaczyć;)

     

    dobrze po kolei co mam zrobić stworzyć drugi pusty obiekt? i wrzucić go do drugiej planszy;)? ale co to da;)?

     

    o i zauważyłem,że mam ta samą sytuacje z punktami czyli global.score z monetami global.coins tak samo jak życia..życia w nowej planszy są cały czas 5 a punkty i monety zamiast mi zliczać do kolejnej planszy,to mi je zeruje...mam na zero..no kurcze ech

    MaxGaminng ratuj..mogę i twój sposób zastosować aby zadziałało..

  10. Cześć wszystkim mam taki problem i teraz się przypatrzyłem.

    opisze o co chodzi:

     

    Zaczynam sobie grę plansza pierwsza z 5 życiami,bo tyle sobie ustawiłem..no i np tam stracę w tej planszy życie jedno,czy tam więcej..

    przechodzę później do kolejnej planszy i zamiast mieć tą ilość żyć co w pierwszej planszy(czyli pomniejszoną o tyle ile straciłem),to ja znowu mam 5 żyć..

    jak to naprawić?

     

     

    mam to w tym obiekcie,co umieszczony mam na planszy tu mam i hud itp rzeczy

     

    tu create obiektu kontroler,oczywiście ten obiekt mam ustawiony na persistent

    create

     

     

    GML
    ///Ustawienia globalne

    image_speed = 0;

     

    global.watch = 0; //Ustawiamy globalnie na 0 w celu ich dalszego sumowaniu umozliwjajacego przejscie do nastepnej planszy po zebraniu ich odpowiedniej ilosci

    global.pScore = 0;

    global.life = 5;

    global.coins = 0;

    global.Saved = true;

    globalvar spawnX, spawnY;

    ///Widok

    globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY;

    gvX = view_xview[0];

    gvY = view_yview[0];

    gvW = view_wview[0];

    gvH = view_hview[0];

    gvObj = view_object[0];

    gvOffX = 0;

    gvOffY = 0;

     

    ///HUD

    hpHUD = 0;

    maxHpHUD = 0;

  11. GML//optymalizacja kodu gry

    instance_activate_all();

    instance_deactivate_region(view_xview[0]-64,view_yview[0]-64,// początek regionu, w ktorym dezaktywujesz obiekty

    view_wview[0]+64,view_hview[0]+64,false,true); // dlugosc i wysokosc regionu

    instance_activate_object(obj_game_controller);

    W nawiasach kwadratowych podajesz numer viewa, nie wiem czemu wpisłeś tam 64 zamiast 0. Musisz po prostu odjąć margines, a 0 w nawiasie kwadratowym pozostawiasz w spokoju :P

    Ogółem ok, tylko czy np. nie zespawnuje się gracz w aktywnym spawnie(bo wyjątek) w nie aktywnym regionie? Chodzi o to by np. nie zespawnowalo go w innym obiekcie który aktualnie jest nie aktywny. Przeanalizuj kod spawnu, czy jest przygotowany na taką ewentualność ;) Bo to czy może tak zostać zależy od tego jak wygląda fizyka i spawnienie. Tak poza tym naczęściej w platformówkach solidów jest najwięcej. Nie wiem jak jest u Ciebie, ale pomyśl czy na pewno chcesz je wykluczyć z dezaktywacji?

     

    Dzięki teraz już rozumiem z tym view;) kurcze,bo zakręciłem się na maksa;)

    z spawn jest wszystko w porządku sprawdzałem..co do solidów,no to jak ci pisałem mam scenerie zbudowaną jako jedną całość...i na nią nałożony jeden niewidzialny solid w małych różnych kawałkach;)

    działa bardzo ładnie teraz;) kurcze,aż w szoku jestem;)

     

    Dzięki jeszcze raz;)

  12. Ale za wielkość viewa odpowida już view_width i height ;) Margines to dodatkowy obszar przeciw bugom.

    Marignes np. ustal na 32, czy 64px, chyba że wymaga więcej... a możesz i bez, ale panuje taka zasada, że dla bezpieczeństwa się zostawia jakiś margines.

     

    A chodzi mi o to, że pierwsze 4 argumenty to x, y, szerokość, długość. Odjęcie od x to margines z lewej, odjęcie od y to margines od góry, zwiększenie szerokości to margines z prawej, a zwiększenie wysokości dolny margines. Zrobiłeś margines z prawej i u dołu, a z lewej i u góry nie. Z lewej to jeszcze logiczne skoro nie da się w lewo chodzić, ale czemu u dołu jest, a u góry nie ma? To celowy zabieg, czy po prostu źle mnie zrozumiłeś?

     

     

     

     

    Po prostu źle Cię zrozumiałem;)

    czyli daje margines tak:

     

    Begin step gracza

    GML
    //optymalizacja kodu gry

    instance_activate_all();

    instance_deactivate_region(view_xview[64],view_yview[64],// początek regionu, w ktorym dezaktywujesz obiekty

    view_wview[0]+64,view_hview[0]+64,false,true); // dlugosc i wysokosc regionu

    instance_activate_object(obj_game_controller);// tu dodaje rozumiem wyjątki w grze,które chce żeby się nie dezaktywowały</span>

    instance_activate_object(obj_room_controller);

    instance_activate_object(obj_global_controller);

    instance_activate_object(par_solid);

    instance_activate_object(par_solid_ghost);

    instance_activate_object(obj_napis_plansz);

    instance_activate_object(obj_fade);

    instance_activate_object(obj_przejscie7);

    instance_activate_object(obj_energia);

    instance_activate_object(obj_spawn_bulwa);

    instance_activate_object(obj_spawn);

    instance_activate_object(obj_spawn_gerwazy);

    instance_activate_object(obj_spawn_rysiu);

    instance_activate_object(obj_spawn_rysiu_chodzi);

    instance_activate_object(obj_spawn_dino);

    instance_activate_object(obj_spawn_bandyta);

    instance_activate_object(obj_enemy_smoczek);

    instance_activate_object(par_hazard);

    instance_activate_object(obj_spadajace_kolce);

     

     

    Ktoś mi może powiedzieć co jest nie tak...ogólnie wszystko dobrze działa...ale teraz jak znajdę się,czy to na samym początku planszy lub na samym końcu planszy,to jednorazowo tylko raz wyświetla się przez ułamek sekundy kawałek poprzedniej planszy z poprzedniego roomu..

    O co z tym chodzi? jak się tego pozbyć?

     

     

  13. No zależy ile jeszcze tych solidów jest, bo może jednak warto by było..

     

    Ale ogółem powinno być ok, jeżeli coś Ci buguje to wtedy zmieniaj ;)

    Aczkolwiek bym zmniejszył ten z prawej i u dołu margines. Ciekawi mnie też czemu u góry marginesu nie ma, a u dołu jest, tak miało być?

     

    No nic nie buguje Maxgaming;) hmmm chodzi ci dlaczego mam margines +800 ;)?

     

    bo w view w grze ustawiłem sobie 800x500 czyli mały kawałek scenerii;) z całości;) i ta część ma być nietykalna;) i każda za nią ma się dezaktywować i przed nią też może,ale jak się znajde w jej zasiegu,to ma się aktywować i tyle;)

  14. No to mniej więcej tak jak piszesz, tylko jednak margines, aż tak duży być nie musi. Jeżeli nie masz zbyt długich obiektów to raczej margines duży być nie musi, jednak niewielki jednak bym dał dla pewności ;)

     

    A ponowna aktywacja musi być, bo inaczej raz zdezaktywowany obiekt, permanentnie by był już nie aktywny ;)

     

    zobacz coś takiego;D?

    chce tylko żeby view mój był aktywny co ma wymiary podglądu 800x500 szeroki 800 wysoki na 500..reszta za nim ma być nieaktywna...dodałem wyjątki,ale hmmm czy to jest dobre

    mają być nieaktywne,a jak znajdą się w moim podglądzie nie daleko ,to mają się aktywować ot coś takiego.

     

     

    GML
    //optymalizacja kodu gry

    instance_activate_all();

    instance_deactivate_region(view_xview[0],view_yview[0],// tu nie dałem marginesu..czyli teraz,wszystko z lewej strony powinno się dezaktwować,jak nie jest w zasięgu mojego podglądu.

    view_wview[0]+800,view_hview[0]+500,false,true); // dlugosc i wysokosc regionu

    instance_activate_object(obj_game_controller);// tu dodaje rozumiem wyjątki w grze,które chce żeby się nie dezaktywowały</span>

    instance_activate_object(obj_room_controller);

    instance_activate_object(obj_global_controller);

    instance_activate_object(par_solid);

    instance_activate_object(par_solid_ghost);

  15. @Cygnus: Zazwyczaj to jest rozmiar view + margines jakiś tam.

     

    @Milord: Nie do końca. Marginesy robi się tylko dla pewności, np jakby jakieś obiekty były duże i by niby były dezaktyowane a nie powinny i mamy wtedy bugi itp.. To dużo zależy jak zbudowana jest nasza gra, ale raczej aż tak duże nie są potrzebne(czym większe tym większe obciążenie PC).

    instance_activate_all(); - aktywuje wszystkie obiekty, bo te nie aktywują się same co step ;) Taki efekt otrzymałeś bo dezaktywowałeś obiekty przed sobą a ich z powrotem nie aktywowałeś. Aha i jak w grze np chodzi się tylko w prawo to można dezaktywować wszystkie obiekty od lewej(zacząć nie od view_xview, a od 0)... Ale mówię to zależy wszystko od konstrukcji gry. Może poczytaj sobie więcej bardziej jak to działa, żeby więcej teorii mieć, bo o złotą metodę pasującą do każdego projektu tutaj ciężko :)

     

     

    Max gaming;)

    to gra platformowa chodzi się w prawo;) ale można się cofać;) ale tylko w danej planszy;)

    Bardziej mi chodzi o efekt,że chce tak żeby wszystko co jest w podglądzie moim view okienku było aktywne,a po za nim już nie aktywne,o to mi dokładnie chodzi ;)

  16. GMLinstance_activate_all();

    instance_deactivate_region(view_xview[0],view_yview[0],// początek regionu, w ktorym dezaktywujesz obiekty

    view_wview[0],view_hview[0],false,true); // dlugosc i wysokosc regionu

    instance_activate_object(WYJĄTEK);// tu dodaje rozumiem wyjątki w grze,które chce żeby się nie dezaktywowały

    Chodź po 1. radziłbym trochę rozszerzyć, na wszelki wypadek

    GMLinstance_deactivate_region(view_xview[0]-margines,view_yview[0]-margines,// początek regionu, w ktorym dezaktywujesz obiekty

    view_wview[0]+margines,view_hview[0]+margines,false,true); // dlugosc i wysokosc regionu

    instance_activate_object(WYJĄTEK);// tu dodaje rozumiem wyjątki w grze,które chce żeby się nie dezaktywowały

     

    I lepiej podziel sobie na obiekty dynamiczne(te poruszające się np. npc-ty) i statyczne(np. ściana). Bo inaczej możesz mieć bugi, że npc npc-t wejdzie w ścianę(która jeszcze dezaktywowana nie będzie). Wtedy dynamicznym daj większy margines.

     

    Musisz dać to w jakiś obiekt, może być gracz. Step, begin itp. to raczej dużego znaczenia nie ma, chodź w specyficznych sytuacjach możesz musieć to zmienić zależnie od swojego kodu. Chociaż jeżeli masz kod np. w step zawsze, to danie w begin może trochę zmniejszyć ryzyko bugów, ale jeżeli stosujesz osobną dezaktywację dynamicznych i statycznych obiektów to nie musisz się raczej o to martwić ;)

     

    Respawn? To zależy, bo jeżeli mają się zawsze respawnować, to może być problem z dezaktywacją w ogóle. Jeżeli mają tylko w pobliżu gracza to tak, dezaktywuj.

     

    MaxGaming zrobiłem tak kod dałem w begin step gracza

     

     

     

    GML
    //optymalizacja kodu gry

    instance_activate_all();

    instance_deactivate_region(view_xview[0]-300,view_yview[0]-400,// początek regionu, w ktorym dezaktywujesz obiekty,ale chyba trzeba dać na + marginesy,bo dezaktytwuje wszystko co jest przede mną,a nie za mną

    view_wview[0]+800,view_hview[0]+500,false,true); // dlugosc i wysokosc regionu ,tu chodzi o moje parametry view podgladu pokoju?

    instance_activate_object(obj_game_controller);// tu dodaje rozumiem wyjątki w grze,które chce żeby się nie dezaktywowały</span>

    instance_activate_object(obj_room_controller);

    instance_activate_object(obj_global_controller);

    instance_activate_object(par_solid);

    instance_activate_object(par_solid_ghost);

     

     

    dałem wyżej instance_activate_all(); ale nie wiem,czy tak ma być,bo bez tego jak nie dam,to jak idę graczem do przodu,to wszystkie obiekty,które są przede mną zniknęły;) oczywiście poza tymi co dodałem do wyjątku..

  17. Lenin ja już dawno tak zrobiłem za nim mi odpisałeś

    Ale else nic nie pomaga:/

     

    step wroga

     

     

     

    GML
    //Prosta sztuczna inteligencja wroga

    image_angle = direction;

    if distance_to_object(obj_bohater)<90

    {

    if obj_bohater.x>x image_xscale=1;

    else image_xscale=-1;

    if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_sciana)) x+=image_xscale*5;

    }

    else

    if place_meeting(x,y,par_solid) || place_meeting(x,y,par_solid_entity) && image_xscale = 1

    {

    image_xscale = -1;

    }

    if place_meeting(x,y,par_solid) || place_meeting(x,y,par_solid_entity) && image_xscale = 1

    {

    image_xscale = 1;

    }

     

    // Odwracanie wroga od obj_niewidzialna_przeszkoda

    else

    if place_meeting(x+5,y,obj_niewidzialna_przeszkoda) && image_xscale = 1

    {

    image_xscale = -1;

    }

    if place_meeting(x-5,y,obj_niewidzialna_przeszkoda) && image_xscale = -1

    {

    image_xscale = 1;

    }

    else

    //Zachowanie bohatera na platformy z nalozona par_przeswitujaca_platforma

    if place_meeting(x+5,y,par_przeswitujaca_platforma) && image_xscale = 1

    {

    image_xscale = -1;

    }

    if place_meeting(x-5,y,par_przeswitujaca_platforma) && image_xscale = -1

    {

    image_xscale = 1;

    }

    else

    if !place_meeting(x+sign(image_xscale),y-2,par_solid) {

    if image_xscale > 0 {

    hspd = min(hspd+sign(image_xscale),2);

    } else if image_xscale < 0 {

    hspd = max(hspd+sign(image_xscale),-2);

    }

    }

    if hspd == 0 {

    image_xscale *= -1;

    unstick(8);

    }

     

    //Przeciwnik mruga

    if hurtClock > 0 {

    visible = !visible;

    hurtClock -= 1;

    } else {

    visible = true;

    }

     

     

    if hp <= 0 {

     

    instance_destroy();

     

    dead = true; //wywolanie alarmu,gdy wrog jest martwy

    global.pScore += 100;

    instance_create(x,y-50,choose(obj_moneta,obj_gwiazdka,obj_serce)) // Losowy element,kiedy wrog zginie np gwiazdka,moneta,serce itp

    with instance_create(x,y,obj_ginaca_jednostka) {

    sprite_index = spr_wrog_umiera; //zmiana sprita

    image_xscale = other.image_xscale;

    image_yscale = other.image_yscale;

    hspd = other.hspd;

    vspd = other.vspd;

    audio_play_sound(dzwiek_wrog_umiera, 1, false); //odtwarzamy dzwiek przy smierci wroga

    }

    }

     

     

    //respawn wroga

    if (dead == true)

    {

     

    instance_create(x,y,obj_spawn);

    }

  18. wiem wiem dużo tego musiałbym wysłać...

     

     

    zobacz

     

    tak już lepiej działa

     

     

    GML
    if(vspd>0 ^^ hspd>0)

    {

    image_speed=1;

    }else{

    image_speed=0;

    };

     

     

    tylko,że jak idę w lewo jest ok,a jak w prawo,to sprita wygląda jakby cały czas krok robił;)

     

    aj nie jest to już takie istotne;)

    i Tak Ci bardzo dziękuje za pomoc;)

     

    Ps.Zerknąłbyś jeszcze do moich dwóch tematów? bo tam mam największy problem;)

  19. Każdy z tech warunków może być spełniony w danym stepie, dlatego image_xscale zmienia się co chwila.

    wykonuje się to

    GMLif obj_bohater.x>x image_xscale=1;

    nastepnie to

    GMLif place_meeting(x+5,y,par_przeswitujaca_platforma) && image_xscale = 1

    {

    image_xscale = -1;

    bo oba mogą być spełnione, i zaczyna Ci skakać.

    Zdecyduj co pierwsze ma być sprawdzane, zrób z tego logiczną całość, dodaj else jakieś i powinno być dobrze

     

     

     

    No na pewno ma być ten pierwszy warunek

     

    GML
    if obj_bohater.x>x image_xscale=1;
  20. Zrobiłem symulację u mnie, czy znów nie jakiś babol, ale wszystko śmiga. Może obiekt napis znajduję się tylko w pierwszym pokoju? Pamiętaj że musisz go postawić w każdym pokoju(oczywiście w menu czy coś nie musisz, tylko tam gdzie ma się wyświetlać). Persistant nie powinno tu niczego zmienić.

     

     

    Daj kod poruszania, bo może np. masz na speed, albo jakąś inną metodą i ciężko w ciemno Ci powiedzieć co zrobić :)

     

     

    hehe racja nie mam w drugim pokoju tego obiektu;)

    już go dodaje,raczej więcej niż pewne,że będzie działało;) dziękuje;)

     

    zaraz poszukam u siebie kodu na poruszanie się..

     

    Zrobiłem symulację u mnie, czy znów nie jakiś babol, ale wszystko śmiga. Może obiekt napis znajduję się tylko w pierwszym pokoju? Pamiętaj że musisz go postawić w każdym pokoju(oczywiście w menu czy coś nie musisz, tylko tam gdzie ma się wyświetlać). Persistant nie powinno tu niczego zmienić.

     

     

    Daj kod poruszania, bo może np. masz na speed, albo jakąś inną metodą i ciężko w ciemno Ci powiedzieć co zrobić :)

     

     

    vspd ;) taką metodą mam;)

  21. Staram się Maxgaming;) czasem uda mi się wyłapać mały błąd..W porządku i tak dziękuje za pomoc,bo dużo mi pomogłeś..

     

    w draw dałem

     

     

    GML
    draw_set_font(fn_plansza);

    draw_set_color(c_blue);

     

    switch(room)

    {

    case roo_world1_1://nazwa pokoju

    draw_text(view_xview + view_wview / 2 , view_yview + view_hview / 2 , "STAGE 1-5");

    break;

     

    case roo_world1_2://nazwa pokoju

    draw_text(view_xview + view_wview / 2 , view_yview + view_hview / 2 , "STAGE 2-5");

    break;

     

    case roo_world2_1://nazwa pokoju

    draw_text(view_xview + view_wview / 2 , view_yview + view_hview / 2 , "STAGE 3-5");

    break;

    };

     

    na pierwszej planszy ładnie się napis wyświetla,ale już na drugiej nie wyświetla się..no nie wiem..hmmm..persistent też nic nie daje czy to zaznaczone czy nie;)

     

    co do bohatera..hmmm dając w stepie przed kodem chodzenia gracza image_speed=0; nie do końca rozwiązuje problem ok chwilowo gracz się zatrzymuje,ale potem dziwnie się zachowuje;) niech już tu jest jak jest;)

  22. GMLdraw_text(view_xview + view_wview / 2 , view_yview + view_hview / 2 , "STAGE 1-4");

    Tekst na końcu, najpierw x i y :)

     

    i teraz w poruszaniu robisz:GMLif(instance_number(obj_opis_plansz)>0)

    {

    //kod poruszania

    }

     

    Bo teraz dopiero pomyślałem, że wprowadziłem Cię w błąd przez moje roztargnienie. Wysypało by Ci error jakby obiekt znikł a Ty byś próbował się odwołać do jego alarmu.

    Ten kod sprawdza ilość obiektów z napisem i jeżeli jest jakiś(ich liczba jest większa niż 0) to wykonuje kod poruszania ;)

     

    MaxGaming

     

    mała poprawka w stepie Bohatera wstawiam tak

     

    GML
    if(instance_number(obj_opis_plansz)=0)// zamiast > ,bo tak,to blokowało cały czas ruch bohatera,tak jakby chodził w miejscu

    {

    //kod poruszania

    }

     

    Zastanawia mnie jedna rzecz...bo fajnie już to wygląda..teraz np chcę użyć image_index i na moment,kiedy bohater stoi chciałbym zmienić sprita,by stał całkowicie w miejscu.

  23. Dzięki MaxGaming;) miałem pisać,że udało mi się to rozwiązać;) jeszcze raz dziękuje;) działa idealnie;)

    A powiedz mi na podstawie tego kody,żeby nie wklejać ten obj_napisz_plansza do każdej scenerii i nie zmieniać napisu na 2-4,3-4,4-4 czy można wpisać jakiś warunek,skrypt,który by na podstawie nazwy pokojów załóżmy 4 pokoje nazywają się plansza1,plansza2,plansza3,plansza4 wyświetlał tak jak teraz napis kolejno stage 1-4 stage 2-4 stage 3-4 i stage 4-4 ??

    Bo teraz to trzeba za każdym razem taki sam obiekt tworzyć w każdym pokoju tylko zmieniać mu tekst na odpowiedni,który chcemy żeby się wyświetlił.

×
×
  • Dodaj nową pozycję...