Pagina 1 di 1

Problema buco nero

Inviato: 13/10/2015, 19:02
da Kami_Ender
Buonasera ragazzi. Ho un problema: il player che viene attratto da questo buco nero, a volte viene sbalzato fuori e attraversa i muri. Ci sono i check per la collisione (quella base, del platform) ma se vengo sbalzato fuori dal buco nero attraversa lo stesso i muri. Come risolvere?

Codice: Seleziona tutto

// obj sarebbe il buco nero

if(point_distance(x,y,obj.x,obj.y) <= 170)
{
    // Disabilita le variabili dei powerup
    global.powerup = false ;
    global.activate = true ;
    global.teleport = false ;
    global.pow = false ;

    // Setta gravity e gravity_direction
    gravity = 15 ;
    gravity_direction = point_direction(x,y,obj.x,obj.y) ;
    if(place_meeting(x,y,obj))
    {
       // Scala la vita e grazie codice del player poi verrà distrutto
        life -= 10 ;
    }
}

Re: Problema buco nero

Inviato: 13/10/2015, 21:03
da Vallo92
Puoi postare la parte di codice riguardante la collisione con i muri?

Re: Problema buco nero

Inviato: 14/10/2015, 16:42
da Kami_Ender
Fin troppo classica xD

Codice: Seleziona tutto

//Horizontal Collision
if (place_meeting(x+hsp,y,obj_wall))
{
    while(!place_meeting(x+sign(hsp),y,obj_wall))
    {
         x += sign(hsp);
    }
    hsp = 0;
}
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; 

Re: Problema buco nero

Inviato: 14/10/2015, 17:47
da Wolfrost
Perchè usi gravity_direction e gravity quando si vede che stai usando il codice di Shaun Spalding? Il suo codice prevede l'uso di variabili personali sulla gestione della posizione x ed y del player, di conseguenza usando gravity e robe simili crei un bel po' di disordine

Re: Problema buco nero

Inviato: 14/10/2015, 20:47
da Kami_Ender
Grazie ragazzi. Ma quindi come devo fare? :cappa:

Re: Problema buco nero

Inviato: 15/10/2015, 19:42
da Wolfrost
Beh non sappiamo come hai strutturato il gioco sinceramente... è un platform? Se sì come funziona il buco nero? o.O Riesco ad immaginarmelo meglio in un contesto più top-down 2D, non so se sono chiaro... perchè in quel caso basterebbe un check per il raggio (point_distance) e poi usare move_towards_point() o meglio qualche funzione personalizzata per muovere il pg al centro del buco ma tenere attivi i movimenti.

Re: Problema buco nero

Inviato: 16/10/2015, 20:53
da Kami_Ender
Si è un Platform.
Ho modificato lo step event così:

Codice: Seleziona tutto

/////////////////////////////////////////////
if(point_distance(x,y,obj_blhol.x,obj_blhol.y) <= 170)
{
    global.powerup = false ;
    global.activate = true ;
    global.teleport = false ;
    global.pow = false ;

    move_towards_point(obj_blhol.x,obj_blhol.x,6) ;
    
    if(place_meeting(x,y,obj_blhol))
    {
        life -= 10 ;
    }
}
Obj_blhol(buco nero)
DRAW EVENT

Codice: Seleziona tutto

draw_self() ;
draw_circle(x,y,170,true) ;

Re: Problema buco nero

Inviato: 16/10/2015, 20:54
da Kami_Ender
Ma comunque se entro nel raggio d'azione del black hole, move_towards_point mi porta da tutt'altra parte. ;) xD

Re: Problema buco nero

Inviato: 17/10/2015, 9:42
da Solid Snake
Il codice di prima andava bene, semplicemente non devi usare le variabili built-in "gravity" e "gravity_direction", devi fartele tu...

Re: Problema buco nero

Inviato: 17/10/2015, 9:57
da Kami_Ender
Grazie :cappa: