Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Camara En 3ª Persona

Iniciado por Lord Trancos 2, 04 de Julio de 2004, 06:38:08 PM

« anterior - próximo »

Lord Trancos 2

 
Cita de: "seryu"el nivel con el reflejo activado me ha recordado un webo al hospital de un survival horror qe ando haciendo en mis ratos libres (uoh)   x cierto mu maja la leelo que te has pillado  :lol: aunque espero que no sea el personaje de tu juego, porque te aviso que la prota pelirroja ya esta pillada :D
Es un hospital, y la prota sera pelirroja :P
Aunque no es ese modelo, ni ese diseño. Ese modelo solo es de prueba.

pd. Cuando llegue a casa pondre el codigo de la camara. Pero basicamente es lo que he comentado unos posts mas arriba.

pd2. tranki ethernet, el modelo definitivo tendra mas tetas  (uoh)  
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

seryu

Cita de: "ethernet"La unica pega que tengo es q la tia tiene pocas tetas :)
(se puede decir tetas?)
yo creo qe 2 es un numero perfecto. No te niego qe la tia de 3 tetas de total recall molaba, pero como qe me qedo con lo natural  :D  

nsL

 50-60 fps en un 1300 gf4 440MX

lo q mas mola de todo es ir al fondo a la izquierda y caer al vacio  (ole)  
Yo no muero hasta la muerte -

Lord Trancos 2

 

const
 _c_distance1 = 25; // distancia a la que empieza a decelerar
 _c_speed_const1 = 35; // se usa para velocidad constante (mayor es mas lento)
 _c_speed_const2 = 75; // valor maximo para velocidad decelerada (se suma al anterior)

var
 _camPos : TVector;
 _camDir : TVector;
 _camTgt : TVector;
 _camVel : TVector;
 _camTmp : TVector;
 _lenVel, _divVel : single;

 _colData : TCollisionPacket;
 _vel, _grv : TVector;

 //----------------------------

        // lanzamos un rayo desde el player hasta una distancia
        // un poco elevada de su espalda.
        _camTgt := FPlayerPos;
        _camTgt[1] := _camTgt[1] + 20;

        _camPos := _camTgt;

        _camDir := Vector(sin(FPlayerRotY), 0, cos(FPlayerRotY));
        _camPos := VECTOR_AddV(_camPos, VECTOR_MulS(_camDir, 50));
        _camPos[1] := _camTgt[1] + 22;

        // si la deteccion de colisiones esta activada, comprobamos
        // que el rayo no colisiona con nada
        if (C_COLDET_ENABLED) then
        begin
          _vel := VECTOR_SubV(_camPos, _camTgt);
          _grv := VECTOR(0, 0, 0);

          _colData.eRadius := VECTOR(1, 1, 1);
          _camPos := collideWithWorld(@_camTgt, @_vel, 0, @_colData, coldetcheck, FGEOMs.First^.Data[0], 0);
        end;

        // lo de arriba es lo que tenia hecho en un primer momento
        // lo que viene ahora es lo nuevo

        // calculamos el vector diferencia de la posicion
        //  actual (FFinalCameraPos) a la posicion deseada
        _camVel := VECTOR_SubV(_camPos, FFinalCameraPos);
        _lenVel := VECTOR_Length(_camVel);
        if (_lenVel > 0.1) then
        begin

          // --- esto es para decelerar cuando la posicion
          // --- deseada y la real son cortas
          _divVel := _c_speed_const1;
          if _lenVel < _c_distance1 then
          begin
            if _lenVel > 0
              then _divVel := _c_speed_const1 + _c_speed_const2 - (_c_speed_const2 * _lenVel / _c_distance1);
          end;
          // ------------------------------------------

          // normalizamos el vector diferencia y lo
          // multiplicamos por un escalar segun
          // la velocidad y el tiempo transcurrido (_lastFrameTime)
          // [Como veis todavia me base en el tiempo del frame
          //  en lugar de usar time-steps,.... todo llegara...]
          _camTmp := VECTOR_Normalize(_camVel);
          _camTmp := VECTOR_MulS(_camTmp, _lastFrameTime / _divVel);
          if VECTOR_Length(_camTmp) < _lenVel then _camVel := _camTmp;

          // comprobamos que la camara no colisiona con
          // nada en su trayecto desde la posicion actual
          // hasta la posicion deseada.
          if (C_COLDET_ENABLED) then
          begin
            _grv := VECTOR(0, 0, 0);

            _colData.eRadius := VECTOR(1, 1, 1);
            _camPos := collideWithWorld(@FFinalCameraPos, @_camVel, 0, @_colData, coldetcheck, FGEOMs.First^.Data[0], 0);
          end;
        end;

        // y ya esta
        FFinalCameraPos := _camPos;
        FFinalCameraTgt := _camTgt;
      end;

on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.