Problemah col boss

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Problemah col boss

Messaggio da Kami_Ender »

Heylà GMI! E' un po' che non vi sento!
Sono tornato con una domanda.... [Pubblico: "Ma che spacchio di utente è questo, che sparisce e poi vuole una mano, ma io me ne vado!"]
Sto programmando il boss del gioco, e vorrei che ogni 20 sec. circa si teletrasporti sopra il player e poi cada.
Ecco il codice che ho scritto:

CREATE del boss

Codice: Seleziona tutto

dir = -1 ;
movespeed = 6 ;
hsp = 0 ;
vsp = 0 ;
grav = 0.3 ;
STEP del boss

Codice: Seleziona tutto

alarm [0] = 600 ;

hsp = dir * movespeed ;
vsp += grav ;

//Horizontal Collision
if (place_meeting(x+hsp,y,obj_wall))
{
    while(!place_meeting(x+sign(hsp),y,obj_wall))
    {
         x += sign(hsp);
    }
    hsp = 0;
    dir *= -1 ;
}
x += hsp;

//Vertical Collision
if (place_meeting(x,y+vsp,obj_wall))
{
    while(!place_meeting(x,y+sign(vsp),obj_wall))
    {
         y += sign(vsp);
    }
    vsp = 0;
}
y += vsp; 


if (place_meeting(x,y,obj_player))
{
    if (obj_player.y < y-16) 
    {
        with (obj_player) vsp = -jumpspeed ;
        instance_destroy();
    }
    else
    {
        with(obj_player) life -= 15 ;
        dir *= -1 ;
    }
}

if (place_meeting(x,y,obj_enemy)) dir *= -1 ;

ALARM 0 del boss

Codice: Seleziona tutto

y = obj_player.y - 100 ;
x = obj_player.x ;
grav = 0.1 ;
Tuttavia il codice, non sortisce alcun effetto. Una mano? Grazie. :cappa:

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Problemah col boss

Messaggio da doom13 »

È il classico errore, se metti alarm[0] = 600 nello step event otterrai che ad ogni step l'alarm verrà risettato a 600 e non scadrà mai.
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Kami_Ender
Membro
Messaggi: 62
Iscritto il: 08/06/2015, 12:18

Re: Problemah col boss

Messaggio da Kami_Ender »

Classico errore che non ho ancora imparato a gestire...grazie, come sempre molto disponibile, Doom. :cappa:

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Problemah col boss

Messaggio da doom13 »

Banalmente puoi usare un'altra variabile booleana.
La inizializzi a true, poi nel codice fai una cosa del genere:
if(start_alarm)
{
alarm[0] = 600;
start_alarm = false;
}

Poi nell'alarm metti oltre ovviamente al resto del codice:
start_alarm = true;
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
Wolfrost
Membro super
Messaggi: 692
Iscritto il: 03/08/2014, 13:08
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Una galassia lontana lontana...
Contatta:

Re: Problemah col boss

Messaggio da Wolfrost »

Il miglior modo per gestire questo problema è fare un controllo sul valore dell'alarm.

if (alarm[0]==-1) {
//Esegui roba
}

Tutti gli alarm, quando hanno valore -1, significa che non sono stati triggerati.
Immagine

Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Problemah col boss

Messaggio da doom13 »

Wolfrost ha scritto:Il miglior modo per gestire questo problema è fare un controllo sul valore dell'alarm.

if (alarm[0]==-1) {
//Esegui roba
}

Tutti gli alarm, quando hanno valore -1, significa che non sono stati triggerati.
Meglio ancora, io sono abituato a gm8 dove gli alarm si fermavano a 0.
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Problemah col boss

Messaggio da Solid Snake »

doom13 ha scritto:
Wolfrost ha scritto:Il miglior modo per gestire questo problema è fare un controllo sul valore dell'alarm.

if (alarm[0]==-1) {
//Esegui roba
}

Tutti gli alarm, quando hanno valore -1, significa che non sono stati triggerati.
Meglio ancora, io sono abituato a gm8 dove gli alarm si fermavano a 0.
:spat:

Codice: Seleziona tutto

if (alarm[0]==0)
{
    //Esegui roba
}
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Problemah col boss

Messaggio da doom13 »

Solid Snake ha scritto:
doom13 ha scritto:
Wolfrost ha scritto:Il miglior modo per gestire questo problema è fare un controllo sul valore dell'alarm.

if (alarm[0]==-1) {
//Esegui roba
}

Tutti gli alarm, quando hanno valore -1, significa che non sono stati triggerati.
Meglio ancora, io sono abituato a gm8 dove gli alarm si fermavano a 0.
:spat:

Codice: Seleziona tutto

if (alarm[0]==0)
{
    //Esegui roba
}
Si hai ragione, sto facendo confusione io, per un certo periodo ero convinto che un alarm potesse essere eseguito anche settandolo a 0 quindi avevo pensato alla soluzione descritta nel primo messaggio.
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: Problemah col boss

Messaggio da Solid Snake »

Comunque aprendo questa piccola parentesi:
Mi sembra strano che in GM8 gli alarm si fermino a 0, se non ricordo anche in quella versione si fermavano a -1.
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

Avatar utente
doom13
Moderatore
Messaggi: 2093
Iscritto il: 31/08/2012, 15:40
Specialità: Programmazione
Uso: GM:Studio 2
Contatta:

Re: Problemah col boss

Messaggio da doom13 »

Solid Snake ha scritto:Comunque aprendo questa piccola parentesi:
Mi sembra strano che in GM8 gli alarm si fermino a 0, se non ricordo anche in quella versione si fermavano a -1.
Ho provato su gm8 e 8.1 e ricordi bene a conferma della mia confusione sugli alarm :lol:
Immagine
Spoiler
Maze [sospeso]
Isom (titolo provvisorio) (Windows & Android) [sospeso]
Keep Calm & Jump (Android) [In corso]
The Graywall (Windows) [Completo]
DTB (Windows & Android) [Completo]
The Last Spell (Windows) [Completo]
Dukenstein: Return to the house (Windows) [Completo]
DMSystem (Windows) [Completo]
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"

Avatar utente
Wolfrost
Membro super
Messaggi: 692
Iscritto il: 03/08/2014, 13:08
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Una galassia lontana lontana...
Contatta:

Re: Problemah col boss

Messaggio da Wolfrost »

In realtà l'alarm quando arriva a 0 esegue l'azione che deve eseguire, poi si mette a -1, uno stato come per dire "non sono attivo".
Immagine

Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 142 ospiti