Skocz do zawartości

Niewyraźny ekran i czcionka w menu gry - GM:S


Cygnus

Rekomendowane odpowiedzi

Threef view na pewno w tych pokojach menu i game over nie mam ustawionych,bo patrzyłem w ustawieniach...

został rozwiązany problem jak wychodzi się z gry do głównego menu,ale pozostał problem jak bohater ginie,wskakuje plansza game over już nie wyraźna no i jak nacisnę escape,bo tam mam ustawione ,to przechodzę do menu głównego gry i jest niewyraźne..ten obiekt stworzony z tym kodem co mi podałeś wstawiłem go zarówno w game over jak i w menu głównym.

Dziwne trochę,bo jak wyjdę z gry do głównego menu,no to ładnie już wszystko wygląda,a jak zginę i wskoczy plansza game over,to już bardzo brzydko...

Threef co mam podać jeszcze żeby zlokalizować co jest nie tak???

Odnośnik do komentarza
Udostępnij na innych stronach

To samo co wtedy. Musimy znać wymiary wszystkich powierzchni. Twój błąd pojawia się po zmianie rozmiaru application_surface. Musisz sprawdzić jakie są dobre i jakie są złe wymiary. Dopiero wtedy będzie można coś robić.

Odnośnik do komentarza
Udostępnij na innych stronach

Tutaj cały kod ze wszystkich obiektów jakie są w scenerii w grze:

 

1.obj_game_controller

 

CREATE

 

GML
///Setup

global.pScore = 0;

global.life = 5;

global.coins = 0;

 

globalvar spawnX, spawnY;

//View

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
///View

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;

 

//Backgrounds

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);

}

}

}

 

Room Start

 

GML
///Destroy self

if string_copy(room_get_name(room),0,9) != "roo_world"

 

{ //wyszukiwwanie nazw map z poaczatkiem roo_world

instance_destroy();

}

 

GML
///View

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
///Draw player HUD

draw_set_color(c_white);

draw_text(32, 88, string(" Score: " + string(global.pScore)));

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

 

draw_sprite(spr_healthbar,0,0,0);

draw_text(32, 64, string(" Lives: " + string(global.life)));

draw_text(32, 120, string(" Coins: " + string(global.coins)));

if instance_exists(par_player) {

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

maxHpHUD = par_player.maxHp;

 

with obj_player {

var _offset;

_offset = 0;

draw_set_font(fnt_small);

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);

}

 

draw_sprite_part(spr_healthbar,1,4,0,91/maxHpHUD*hpHUD,32,4,0);

 

2.obj_room_controller

 

press<ESCAPE>

 

GML
instance_create(x, y, obj_pause_menu_controller);

 

 

3.obj_global_controller

 

CREATE

 

GML
///Setup

//restart =true;

//r = 0;

//World selections

globalvar openWorlds;

openWorlds = ds_list_create();

 

ds_list_add(openWorlds,roo_world1_1);

ds_list_add(openWorlds,roo_world2_1);

//ds_list_add(openWorlds,SEN);

//Key bindings

globalvar kUp, kDown, kLeft, kRight, kJump, kAction;

kUp = vk_up;

kDown = vk_down;

kLeft = vk_left;

kRight = vk_right;

kJump = vk_space;

kAction = ord("X");

 

//Map Z for other keyboard layouts

keyboard_set_map(ord("Y"),ord("Z"));

keyboard_set_map(ord("W"),ord("Z"));

 

//Particle system

globalvar partSystem, pRain, pLightFog, pHeavyFog, pArrow, pPlayerProjectileTrail, pExplosion, pPixel, pLavaGlow, pz;

partSystem = part_system_create();

part_system_depth(partSystem,-100);

 

pRain = part_type_create()

part_type_alpha3(pRain,0,.5,0);

part_type_colour1(pRain,c_white);

part_type_shape(pRain,pt_shape_line);

part_type_size(pRain,0.15,0.15,0,0);

part_type_gravity(pRain,1,270);

part_type_direction(pRain,270,270,0,0);

part_type_speed(pRain,8,16,0,0);

part_type_orientation(pRain,90,90,0,0,0);

part_type_life(pRain,3,5);

 

pLightFog = part_type_create()

part_type_alpha2(pLightFog,.05,0);

part_type_colour2(pLightFog,c_white,c_gray);

part_type_shape(pLightFog,pt_shape_cloud);

part_type_size(pLightFog,1,2,0,0);

part_type_direction(pLightFog,0,360,0,0);

part_type_speed(pLightFog,.1,.2,0,0);

part_type_orientation(pLightFog,0,360,0,0,0);

part_type_life(pLightFog,30,120);

 

pHeavyFog = part_type_create()

part_type_alpha3(pHeavyFog,0,.2,0);

part_type_colour2(pHeavyFog,c_white,c_gray);

part_type_shape(pHeavyFog,pt_shape_cloud);

part_type_size(pHeavyFog,1,3,0,0);

part_type_direction(pHeavyFog,0,360,0,0);

part_type_speed(pHeavyFog,.1,.2,0,0);

part_type_orientation(pHeavyFog,0,360,0,0,0);

part_type_life(pHeavyFog,30,120);

 

pArrow = part_type_create()

part_type_alpha3(pArrow,0,.5,0);

part_type_colour1(pArrow,c_lime); //Will change on use

part_type_sprite(pArrow,spr_part_arrow,true,false,false);

part_type_direction(pArrow,180,180,0,0); //Will change on use

part_type_speed(pArrow,1,2,.1,0);

part_type_orientation(pArrow,180,180,0,0,0); //Will change on use

part_type_life(pArrow,10,20);

 

pPlayerProjectileTrail = part_type_create()

part_type_alpha2(pPlayerProjectileTrail,.8,0);

part_type_sprite(pPlayerProjectileTrail,spr_projectile,true,false,false); //Will change in projectile

part_type_size(pPlayerProjectileTrail,.8,.8,0,0);

part_type_life(pPlayerProjectileTrail,5,10);

 

pz = part_type_create()

part_type_alpha2(pz,.8,0);

part_type_sprite(pz,spr_pocisk_armatek,true,false,false); //Will change in projectile

part_type_size(pz,.8,.8,0,0);

part_type_life(pz,5,10);

 

 

 

 

 

pExplosion = part_type_create()

part_type_alpha2(pExplosion,1,0);

part_type_color1(pExplosion,c_orange);

part_type_shape(pExplosion,pt_shape_explosion);

part_type_size(pExplosion,1,1,0,0); //Will change on use

part_type_life(pExplosion,30,30);

part_type_blend(pExplosion,true);

 

pPixel = part_type_create();

part_type_shape(pPixel,pt_shape_pixel);

 

pLavaGlow = part_type_create()

part_type_alpha3(pLavaGlow,0,.1,0);

part_type_colour1(pLavaGlow,c_orange);

part_type_shape(pLavaGlow,pt_shape_smoke);

part_type_size(pLavaGlow,1,1,0,0);

part_type_direction(pLavaGlow,90,90,0,0);

part_type_speed(pLavaGlow,.1,.2,0,0);

part_type_orientation(pLavaGlow,0,360,0,0,0);

part_type_life(pLavaGlow,60,180);

part_type_blend(pLavaGlow,true);

 

DESTROY

GML
part_system_destroy(partSystem);

part_type_destroy(pRain);

 

 

STEP

 

GML
key_r = keyboard_check_pressed(ord("R"));

if (key_r) {

room_restart();

}

 

BEGIN STEP

 

GML
///Window

if (view_wport[0] != window_get_width() || view_hport[0] != window_get_height()) && window_get_width() != 0 {

view_wport[0] = window_get_width();

view_hport[0] = window_get_height();

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

surface_resize(application_surface,view_wview[0],view_hview[0]);

display_set_gui_size(view_wport[0],view_hport[0]); //wersja podstawowa</span>

}

 

 

4.obj_fade

 

CREATE

 

GML
fadeIn = true;

alpha = 1;

alarm[0] = room_speed * 0.05;

 

 

ALARM 0

 

GML
if (fadeIn == true)

{

if (alpha > 0)

{

alpha -= 0.015;

alarm[0] = room_speed * 0.05;

}

else

{

alpha = 0;

 

}

}

 

 

ALARM 1

 

GML
if (fadeIn == false)

{

if (alpha < 1)

{

alpha += 0.015;

alarm[1] = room_speed * 0.05;

}

else

{

alpha = 1;

 

 

if (room == rm_cygnus)

{

room_goto(rm_menu);

}

else

{

room_goto(rm_cygnus);

}

if (obj_options)

{

room_goto(rm_options); // do zmiany jak dojdzie pokoj z rozbudowanyi opcjami

}

else

{

room_goto(obj_back);

}

 

if (obj_play)

{

room_goto(SEN);

}

else

{

room_goto(SENczB);

}

 

}

}

 

DRAW

 

GML
draw_set_color(c_black);

draw_set_alpha(alpha);

draw_rectangle(0,0,room_width,room_height,false);

draw_set_alpha(1);

 

draw_set_font(fntScore)

if (alpha > 0.5)

{

draw_set_color(c_white);

}

else

{

draw_set_color(c_black);

}

draw_set_halign(fa_center);

draw_set_valign(fa_middle);

//draw_text(room_width/2,50,"Alpha = " +string(alpha)); //sprawdzanie przyciemniania jak dziala w kazdym pokoju

 

 

5.obj_przejscie7

 

CREATE

 

GML
///Setup

///Change room

if (room == roo_world1_1) {

room_goto_transition(roo_world1_1,TRANS_MAXIMIZE,10+irandom(80),choose(c_lime,c_yellow,c_white,c_black,c_gray),true);

}

 

 

 

To są wszystkie obiekty u mnie na scenerii w grze...

 

a tu jest w menu gry takie obiekty ten obj_fade co jest w scenerii gry i jeszcze obj_controller

 

o to kod obj_controller

 

CREATE

 

GML
global.pScore = 0;

 

 

STEP

 

GML
key_r = keyboard_check_pressed(ord("R"));

key_esc = keyboard_check_pressed(vk_escape);

 

if (key_r) { room_restart(); }

if (key_esc) { game_end(); }

 

 

 

DRAW GUI

 

GML
draw_set_color(c_white);
Odnośnik do komentarza
Udostępnij na innych stronach

Nie potrzebujemy kodu. Wszystko już od dawna w nim wyczytaliśmy. Twoje widoki są zależne od rozmiaru okna gry. Te nie jest określone więc nie znamy rzeczywistych wymiarów jakie potrzebujemy. O czym mówię? O tym fragmencie:

GML
view_wport[0] = window_get_width();

view_hport[0] = window_get_height();

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

surface_resize(application_surface,view_wview[0],view_hview[0]);

display_set_gui_size(view_wport[0],view_hport[0]);

Wszystkie dane jakie potrzebujemy do rozwiązania problemu są wyliczane z tych prostych obliczeń, ale nie znamy danych wejściowych, bo są zależne od rozmiaru okna które może mieć wymiary dowolne.

 

Trzeci raz odwołuję cię do mojej poprzedniej odpowiedzi.

 

Nie będę już odpisywał jeżeli nie będę mieć dostępu do danych.

Odnośnik do komentarza
Udostępnij na innych stronach

1.Menu główne nie zepsute ma takie dane:

 

view_hview[0]:480

view_hport[0]:480

App_surface: 1920x1080

 

i tak samo jest w całym menu opcji zanim się popsuje,po lekkiej naprawie co pomogłeś jak wyjdę do menu bohaterem z gry,to też są jw te dane.

 

2.tu dane planszy już z samej rozgrywki gry

 

view_hview[0]:542.19

view_hport[0]:1041

App_surface: 1000x542

 

 

3.Tutaj room game_over ,który pojawia się w momencie śmierci bohatera o to jego dane:

 

view_hview[0]:555.20

view_hport[0]:1041

App_surface: 1024x555

 

 

4.No,a tu jeszcze raz menu główne gry,te same co na samej górze ten sam room,ale już zepsute po wyjściu z pokoju game over jak nacisnę Escape

 

view_hview[0]:347

view_hport[0]:1041

App_surface: 640x347

Odnośnik do komentarza
Udostępnij na innych stronach

No i to są ciekawe dane. Nie zapytałem się nigdzie wcześniej ale domyślam się gra jest odpalana na fullscreen. Z tego powodu przed jakąkolwiek ingerencją w zmiany rozmiarów menu na początku ma taki rozmiar application_surface.

 

view_hport[0] jest zależne od rozmiaru okna. 1041 jest dość dziwną wartością, ale okno można rozszerzać więc nie powinno to dziwić.

 

view_hview[0] w samej grze ma wartość po przecinku. Ogółem wszystkie wartości dotyczące kamery przepuszczałbym przez funkcję round().

 

Room game_over zachowuje się dziwnie. Wartość jest inna i zwalam winę na te dziwne operacje z lerp(). Jeżeli game_over ma zachowywać się tak samo jak menu to możesz tu wykorzystać to samo rozwiązanie co dałem wcześniej. Powinno działać. Jeżeli nie to we wszystkich obiektach w tym room sprawdź czy gdzieś nie zmieniasz view_hview[0] albo surface_resize(application_surface, ...)

 

Wciąż wydaje mi się że to nie jest rozwiązanie. Czy masz jakieś obiekty albo room z zaznaczonym "Presistent"? Jak tak to które? W nich też sprawdź czy nie masz surface_resize().

Odnośnik do komentarza
Udostępnij na innych stronach

Nie pomaga bo któryś obiekt jest persistent i pomimo że nie masz go wstawionego w room to on w nim jest. Nie możesz tego odznaczyć bo przestanie Ci działać kupa innych rzeczy.

Przerób na to:

GML
if(instance_exists(TEN OBIEKT KTÓRZY PSUJE WSZYSTKO)){with(TEN OBIEKT KTÓRZY PSUJE WSZYSTKO){instance_destroy()}}

surface_resize(application_surface,room_width,room_height)

display_set_gui_maximise()

Odnośnik do komentarza
Udostępnij na innych stronach

Nie musisz tworzyć nowego obiektu. Ten kod ma się wykonać raz więc w Create wystarczy... Chyba że room jest persistent, wtedy w room start. Przerób tamten co już stworzyłeś. No i jak masz więcej takich obiektów to:

GML
if(instance_exists(TEN OBIEKT KTÓRZY PSUJE WSZYSTKO)){with(TEN OBIEKT KTÓRZY PSUJE WSZYSTKO){instance_destroy()}}

if(instance_exists( INNY OBIEKT KTÓRZY PSUJE WSZYSTKO)){with(INNY OBIEKT KTÓRZY PSUJE WSZYSTKO){instance_destroy()}}

 

surface_resize(application_surface,room_width,room_height)

display_set_gui_maximise()

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