23.06.2014, 17:33
Bueno.
Estaba tratando de que los NPC's no atraviesen muros de edificios, sin embargo lo logrй con el MapAndreas, pero los NPC's se suben arriba del edificio D:_
Hice este cуdigo, al parecer detecta si a 5 metros hay una altura mбs alta que la del NPC, pero no calcula bien la ruta en donde deberнa ir. Este es el cуdigo:
Estб un poco desoptimizado pero primeramente quiero saber cуmo hacer para calcularlo, alguna soluciуn?
PD: Por si me pregunta, PathFinder hace que el movimiento de los NPC's sea muy cutre, por esa razуn no deseo utilizarlo.
Estaba tratando de que los NPC's no atraviesen muros de edificios, sin embargo lo logrй con el MapAndreas, pero los NPC's se suben arriba del edificio D:_
Hice este cуdigo, al parecer detecta si a 5 metros hay una altura mбs alta que la del NPC, pero no calcula bien la ruta en donde deberнa ir. Este es el cуdigo:
pawn Код:
stock GetCorrectRoute(playerid, &Float:fX, &Float:fY)
{
new Float:Pos[3], Float:Z, Float:Angle;
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Angle);
Pos[0] += (5.0 * floatsin(-Angle, degrees));
Pos[1] += (5.0 * floatcos(-Angle, degrees));
MapAndreas_FindZ_For2DCoord(Pos[0], Pos[1], Z);
if((Z - Pos[2]) > 5.0)
{
for(new Float:i = Angle; i < 360; i += 3.0)
{
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
Pos[0] += (2.0 * floatsin(-i, degrees));
Pos[1] += (2.0 * floatcos(-i, degrees));
MapAndreas_FindZ_For2DCoord(Pos[0], Pos[1], Z);
if((Z-Pos[2]) < 5.0) break;
}
}
return 1;
}
PD: Por si me pregunta, PathFinder hace que el movimiento de los NPC's sea muy cutre, por esa razуn no deseo utilizarlo.