GM: Studio 1 - Colpire i nemici nella schermata

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

GM: Studio 1 - Colpire i nemici nella schermata

Messaggio da MagicFool64 »

Io ho uno script che genera i tuoni sulla posizione di 10 nemici casuali. L'attacco dovrebbe essere tipo che usando l'incantesimo, si generano 10 tuoni su 10 nemici casuali, ma lo script che tengo io funziona per tutti i nemici nella mappa, ma a me serve uno che funziona solo con quelli presenti nella view. Qualcuno mi può aiutare?
Ecco lo script:

Codice: Seleziona tutto

var count, so_far;
so_far = 0;
count = 10;
with(nemico) {
    if not place_meeting(x, y, tuono) and so_far < count {
        instance_create(x, y, tuono);
        so_far += 1;
    }
}
L'ignoranza è la via per l'autodistruzione

Avatar utente
Vallo92
GMI Advanced
Messaggi: 1508
Iscritto il: 15/07/2011, 20:26
Specialità: Grafico
Uso: GM:Studio 2
Contatta:

Re: GM: Studio 1 - Colpire i nemici nella schermata

Messaggio da Vallo92 »

Come hai detto tu, devi controllare se i nemici si trovano nella tua view. Visto che la view può essere vista come un rettangolo, puoi controllare se bbox del nemico si trova all'interno del rettangolo della view:

Codice: Seleziona tutto

if (rectangle_in_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, bview_xview[0], view_yview[0], view_xview[0] + view_wview[0], view_yview[0] + view_hview[0])) {
   // Ok il nemico si trova all'interno della view
}
-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: GM: Studio 1 - Colpire i nemici nella schermata

Messaggio da MagicFool64 »

Vallo92 ha scritto:Come hai detto tu, devi controllare se i nemici si trovano nella tua view. Visto che la view può essere vista come un rettangolo, puoi controllare se bbox del nemico si trova all'interno del rettangolo della view:

Codice: Seleziona tutto

if (rectangle_in_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, bview_xview[0], view_yview[0], view_xview[0] + view_wview[0], view_yview[0] + view_hview[0])) {
   // Ok il nemico si trova all'interno della view
}
Quindi questo script nello step del nemico, giusto? E tra { e } cosa devo scrivere?
L'ignoranza è la via per l'autodistruzione

Avatar utente
Alv
Membro
Messaggi: 133
Iscritto il: 14/11/2014, 22:33
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Sicilia
Contatta:

Re: GM: Studio 1 - Colpire i nemici nella schermata

Messaggio da Alv »

Io di solito utilizzo questo script, che verifica se un oggetto è in schermo o no (lo chiamo "in_screen"):

Codice: Seleziona tutto

if (argument0.bbox_left<view_xview[0]+view_wview[0])
    if (argument0.bbox_right>=view_xview[0])
        if (argument0.bbox_top<view_yview[0]+view_hview[0])
            if (argument0.bbox_bottom>=view_yview[0])
                return true;
return false;
Il tuo codice diventerebbe così quindi:

Codice: Seleziona tutto

var count, so_far;
so_far = 0;
count = 10;
with(nemico) {
    if not place_meeting(x, y, tuono) and so_far < count and in_screen(id) {
        instance_create(x, y, tuono);
        so_far += 1;
    }
}

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: GM: Studio 1 - Colpire i nemici nella schermata

Messaggio da MagicFool64 »

Alv ha scritto:Io di solito utilizzo questo script, che verifica se un oggetto è in schermo o no (lo chiamo "in_screen"):

Codice: Seleziona tutto

if (argument0.bbox_left<view_xview[0]+view_wview[0])
    if (argument0.bbox_right>=view_xview[0])
        if (argument0.bbox_top<view_yview[0]+view_hview[0])
            if (argument0.bbox_bottom>=view_yview[0])
                return true;
return false;
Il tuo codice diventerebbe così quindi:

Codice: Seleziona tutto

var count, so_far;
so_far = 0;
count = 10;
with(nemico) {
    if not place_meeting(x, y, tuono) and so_far < count and in_screen(id) {
        instance_create(x, y, tuono);
        so_far += 1;
    }
}
Funziona, come posso ringraziarti?
L'ignoranza è la via per l'autodistruzione

Avatar utente
Alv
Membro
Messaggi: 133
Iscritto il: 14/11/2014, 22:33
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Sicilia
Contatta:

Re: GM: Studio 1 - Colpire i nemici nella schermata

Messaggio da Alv »

MagicFool64 ha scritto:
Alv ha scritto:Io di solito utilizzo questo script, che verifica se un oggetto è in schermo o no (lo chiamo "in_screen"):

Codice: Seleziona tutto

if (argument0.bbox_left<view_xview[0]+view_wview[0])
    if (argument0.bbox_right>=view_xview[0])
        if (argument0.bbox_top<view_yview[0]+view_hview[0])
            if (argument0.bbox_bottom>=view_yview[0])
                return true;
return false;
Il tuo codice diventerebbe così quindi:

Codice: Seleziona tutto

var count, so_far;
so_far = 0;
count = 10;
with(nemico) {
    if not place_meeting(x, y, tuono) and so_far < count and in_screen(id) {
        instance_create(x, y, tuono);
        so_far += 1;
    }
}
Funziona, come posso ringraziarti?
Nessun problema! :cappa:

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti