Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Como saber la pocicion en carrera de autos

Iniciado por tokioska, Junio 30, 2011, 02:30:34 AM

Tema anterior - Siguiente tema
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/

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;
}

Julio 10, 2015, 08:30:37 PM #7 Ultima modificación: Julio 17, 2015, 06:32:34 PM por Aunel
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.

Julio 13, 2015, 04:34:36 PM #8 Ultima modificación: Julio 17, 2015, 06:30:45 PM por Aunel
[sOLUCIONADO]

Etiquetas: