Buen dia!!!
Estoy realizando un juego de carreras, actualmente tengo 2 autos controlados por scrip y el auto que manejara el usuario pero quisiera saber como saber cuando un auto rebasa a otro para colocar la pocicion en la que se encuentra
Lo mas facil es crear waypoints , de manera que el coche que mas waypoints lleve sera el 1º
No se asi de primeras podrias aserlo con un triger, que al pasar sumara, el paso a una variable, y estas asu ves se comparar con la del resto de los conductores para determinar quien va delante y su posicion no se si me explique bien. Un saludo a todos.
http://developmentunity.blogspot.com/ (http://developmentunity.blogspot.com/)
edito jaja claro pero este triger tendrias que controlar que solo se activara una vez por conductor por que si no el conductor podria dar para atras y para lante y le estaria sumando igual.
em quedo con la idea d elos waypoints jeje de todos modos muchas gracias
Waypoints o triggers tienen que solucionar el problema de la direccion, podria darse que el jugador vaya en reversa y aun asi le cuente.
Yo usaria booleanos para dividir la pista en 3 zonas divididas por triggers, y condicionaria que si estoy en una de ellas el trigger siguiente me lleva a la zona siguiente, y el trigger anterior a la anterior, de esa manera solucionas lo de la direccion, simplemente sumas cada que sumas zona y al dar 3* el numero de laps terminas la carrera.
Ahora, para la posicion, arreglas bien las zonas y en cada zona checkeas distancia con el trigger siguiente.de esa manera el que lleve mas zonas y este mas cerca del trigger va de 1ro...
pilas con tener mas de un collider en los children del carro, pues puede contarte doble cada trigger y se tiras en lo que le acabo de decir.
Soy novato en programacion pero no seria mejor comparar la posicion del player con los demas para sumar o restar la posicion?
algo como if (transform.position.x (del player) > (es mayor que) transform.position.x.gameobject.tag "Rivales" )
sumale +1 a la posicion o restale 1 a la posicion
Lo he probado pero me da este error Assets/scripts/posicion.js(14,57): BCE0019: 'gameObject' is not a member of 'float'.
aydua please
public float GetFractionOfPathCovered(Vector3 position, Vector3 lastNodeReached, Vector3 nextNode)
{
Vector3 displacementFromCurrentNode = position - lastNodeReached;
Vector3 currentSegmentVector = nextNode - lastNodeReached;
float fraction = Vector3.Dot(displacementFromCurrentNode, currentSegmentVector) / currentSegmentVector.sqrMagnitude;
return fraction;
}
He conseguido poner un script en la meta que va contando a los corredores el problema que tengo ahora es que no se como pararlo. Cuando entra el player le dice en que posicion ha quedado pero si viene otro cambia el numero, como le digo que cuando pase el player pare de contar???
#pragma strict
private var contpos : boolean = false;
private var pos:int ;
public var Estetica:GUISkin;
public var poss: int;
function Start ()
{
pos = 0;
}
function OnTriggerEnter(hit:Collider) {
pos = pos +1;
if(hit.gameObject.tag == "Player")
{
poss = pos;
contpos = true;
}
}
function OnTriggerStay(other:Collider) {
if(other.gameObject.tag == "Enemigo")
{
//pos = ctcont;
Destroy(other.gameObject);
}
}
function OnGUI ()
{
if(contpos)
{
GUI.skin = Estetica;
GUI.Label(Rect(200,50, 400, 200),"Felicidades has quedado " +poss.ToString());
}
}
Habia pensado quitarle el script a todos los corredores pero es muy bestia supongo que hay una solucion mejor para esto.
[sOLUCIONADO]