Page 14 of 14

Re: [GAME] WORMED!

PostPosted: Wed Nov 25, 2015 12:06 pm
by shao
Bueno, voy a ver como lo consigo hacer lo que busco, ¡gracias por la info!.

Re: [GAME] WORMED!

PostPosted: Thu Nov 26, 2015 3:39 pm
by AmakaSt
shao wrote:Bueno, voy a ver como lo consigo hacer lo que busco, ¡gracias por la info!.


Hola Shao,

Aquí te dejo el código de una función constraint adaptada a Div:
Code: Select all
function constraint(id1, fijaID1, id2, fijaID2, distancia);
private
    xdist;
    ydist;
    dist;
    diff;
    angulo;
    correccion;

begin   
   if (fijaID1 and fijaID2) return; end

   xdist    = id1.x - id2.x;
    ydist    = id1.y - id2.y;
    dist    = sqrt(xdist * xdist + ydist * ydist);
    diff    = dist - distancia;
   
    if (abs(diff) < 1) return; end
   
    angulo   = -atan2(xdist, ydist);
   
    if (fijaID1 or fijaID2)
       correccion = diff;
    else
       correccion = diff / 2;
    end
   
   if (!fijaID1)
        id1.x += correccion * (sin(angulo) / 1000);
        id1.y -= correccion * (cos(angulo) / 1000);
      
        id1.angle = atan2(id2.y-id1.y, id2.x-id1.x);
    end

    if (!fijaID2)
        id2.x -= correccion * (sin(angulo) / 1000);
        id2.y += correccion * (cos(angulo) / 1000);

        id2.angle = atan2(id1.y-id2.y, id1.x-id2.x);
   end
end


Con eso ya es solo llamar a la función con las ids de los procesos implicados:
Code: Select all
constraint(_id[0], true, _id[1], false, 40); //_id[0] la cabeza del gusano
constraint(_id[2], true, _id[3], false, 40);


Un saludo. :)

Re: [GAME] WORMED!

PostPosted: Thu Nov 26, 2015 5:06 pm
by shao
Gracias Amaka, la probaré mas tarde.

¿No estaría mejor en recursos esto?.