[Funcion PRO] getPosCentro solo pros
#1

Aclaraciуn: Una disculpa por el tнtulo, estaba precisamente buscando algo como la respuesta de Jastak
Bueno el tema que tenнa planteado era el siguiente:

їAlguien sabe si existe una funciуn con la cual pueda obtener las coordenadas X, Y y Z a una distancia de 10 metros la cual pasa por el vector Pos Jugador y el vector Pos Jugador 2?

їUso de la funciуn?
Algo como:
Код:
public OnPlayerUpdate(playerid)
{
	static Float:jPosX, Float:jPosY, Float:jPosZ;
	static Float:jCentroX, Float:jCentroY, Float:jCentroZ;
	if(idDF[playerid] != -1)
	{
		GetPlayerPos(idDF[playerid], jCentroX, jCentroY, jCentroZ);
		getXYZWithDistance(playerid, jPosX, jPosY, jPosZ, jCentroX, jCentroY, jCentroZ);
		SetPlayerCameraPos(playerid, jPosX, jPosY, jPosZ);//La camara a 10 metros lejos del jugador
		SetPlayerCameraLookAt(playerid, jCentroX, jCentroY, jCentroZ);
	}
	return 1;
}
La cual solucionй hoy y la dejo por si a alguien le sirve.
Gracias a Jastak por la funciуn, la estarй revisando y comparбndola con la mнa que de por sн me costo mucho trabajo, aunque tengo dudas en cuanto a la posiciуn Z (de la funciуn de Mauzen ya que aparentemente solo le suma la Z?):
Код:
stock getXYZWithDistance(playerid, &Float:rX, &Float:rY, &Float:rZ, Float:centroX, Float:centroY, Float:centroZ)
{
	static Float:posX, Float:posY, Float:posZ;
	static Float:vDirX, Float:vDirY, Float:vDirZ;
	static Float:t;
	
	GetPlayerPos(playerid, posX, posY, posZ);
	/*Vector director*/
	vDirX = posX-centroX;
	vDirY = posY-centroY;
	vDirZ = posZ-centroZ;
	/*---------------*/
	t = floatsqroot(((posX-centroX)*(posX-centroX))+((posY-centroY)*(posY-centroY))+((posZ-centroZ)*(posZ-centroZ)));
	t = 30/t;
	vDirX *= t;
	vDirY *= t;
	vDirZ *= t;
	
	rX = posX+vDirX;
	rY = posY+vDirY;
	rZ = posZ+vDirZ;
}
Reply
#2

Esta mal eso. Dices que "x, y, z" es el centro, pero luego lo seteas al posicion del jugador. Luego "x1, x2, x3" es la posicion del jugador tambien.

Y que se supone que puedes hacer con esa funcion?
Reply
#3

Код:
//BY MAUZEN
stock GetPlayerRelativePos(playerid, &Float:x, &Float:y, &Float:z, Float:xoff=0.0, Float:yoff=0.0, Float:zoff=0.0)
{
    new Float:rot;
    rot = 360 - rot;
    GetPlayerPos(playerid, x, y, z);
    x = floatsin(rot,degrees) * yoff + floatcos(rot,degrees) * xoff + x;
    y = floatcos(rot,degrees) * yoff - floatsin(rot,degrees) * xoff + y;
    z = zoff + z;
}
y no sй que de que vas con eso de "APUESTO que nadie lo hace mejor", si lo que acabas de hacer es bбsico.
Reply
#4

No le veo el sentido a esa funciуn, ademбs de hacerte pasar por "pro" demostrando una funciуn bбsica (sin sentido ademбs).
Reply
#5

Que estupidez decirlo asн "pros - funciуn pro"..
Reply
#6

Lo siento, se que estuvo mal, era solo como tema de ayuda pero de forma diferente ya que en verdad necesitaba el algoritmo.
En lugar de preguntar algo como:
їme podrнan ayudar encontrando el algoritmo de estб funciуn?
Pensй en poner de otra forma la pregunta, ya que vi que en la secciуn funciones siempre alguien sale con una funciуn mas optimizada
Reply
#7

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Lo siento, se que estuvo mal, era solo como tema de ayuda pero de forma diferente ya que en verdad necesitaba el algoritmo.
En lugar de preguntar algo como:
їme podrнan ayudar encontrando el algoritmo de estб funciуn?
Pensй en poner de otra forma la pregunta, ya que vi que en la secciуn funciones siempre alguien sale con una funciуn mas optimizada
intenta con este:

Код:
//BY MAUZEN
stock GetPlayerRelativePos(playerid, &Float:x, &Float:y, &Float:z, Float:xoff=0.0, Float:yoff=0.0, Float:zoff=0.0)
{
    new Float:rot;
    rot = 360 - rot;
    GetPlayerPos(playerid, x, y, z);
    x = floatsin(rot,degrees) * yoff + floatcos(rot,degrees) * xoff + x;
    y = floatcos(rot,degrees) * yoff - floatsin(rot,degrees) * xoff + y;
    z = zoff + z;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)