Jump to content
UnitySpain
Sign in to follow this  
kalm97

Mover una puerta deslizable

Recommended Posts

Quiero hacer una puerta delizable para una nave sci-fi y quiero q la puerta se translade pero en un tiempo determinado marque el parrafo en rojo cuando ago click E se mueve pero de golpe llega a la ubicacion y no como hacer

private var guiShow : boolean = false;

var isOpen : boolean = false;
var objVel:int = 10;
var door : GameObject;

var rayLength = 10;

function Update()
{
    var hit : RaycastHit;
    var fwd = transform.TransformDirection(Vector3.forward);
    
    if(Physics.Raycast(transform.position, fwd, hit, rayLength))
    {
        if(hit.collider.gameObject.tag == "Door")
        {
            guiShow = true;
            if(Input.GetKeyDown("e") && isOpen == false)
            {
                door.transform.Translate(Vector3(0,20,0) * objVel * Time.deltaTime);
                isOpen = true;
                guiShow = false;

            }
            
            else if(Input.GetKeyDown("e") && isOpen == true)
            {
                door.animation.Play("Door2");
                isOpen = false;
                guiShow = false;
            }
        }
    }
    
    else
    {
        guiShow = false;
    }
}

function OnGUI()
{
    if(guiShow == true && isOpen == false)
    {
        GUI.Box(Rect(Screen.width / 2, Screen.height / 2, 100, 25), "E");
    }
    if(guiShow == true && isOpen == true)
    {
        GUI.Box(Rect(Screen.width / 2, Screen.height / 2, 100, 25), "E");
    }
}

Share this post


Link to post
Share on other sites

Claro que llega rapido. Le has puesto de velocidad 200!!! Aunque lo multipliques por deltaTime sigue siendo muchisimo (incluso 20 es mucho). Yo le pondria... 7 de velocidad mas o menos (multiplicado por deltaTime pero eso lo obvio). Dos consejos:

 

-Usa floats en vez de ints ya que puedes sacar resultados mas exactos y por tanto mas a tu gusto

-Donde pones door.transform.Translate(Vector3(0,20,0) * objVel * Time.deltaTime); usa Vector3.up (es decir, (0,1,0) ) asi la velocidad sera objVel * Time.deltaTime y... Bueno en mi opinion es mas sencillo

 

Suerte

Share this post


Link to post
Share on other sites

Claro que solo se va a mover a saltos o pocos cm, porque lo has puesto en el Update pero dentro de unas condiciones, estás diciendo que el movimiento se produzca cuando :    if(Input.GetKeyDown("e") && isOpen == false), eso es un instante porque el objecto solo se mueve en el instante cuando pulsas la tecla, después no. Translate es una función que calcula el movimiento cada fotograma por tanto para que se mueva tiene que ser llamada continuamente. Después de darte esta chapa porque quiere que lo comprendas, no solo lo pongas sin saber; te propongo una solución:

Puedes sacar el Translate de cualquier condicional y la dirección le pones una variable tipo Vector3 o Vector2. Luego pones que si la puerta esta abierta la dirección sea la que quieras que se mueva y si está cerrada no. Además deberías añadirle un trigger o una distancia de carrera de la puerta, sino se moverá infinitamente.

Saludos

Share this post


Link to post
Share on other sites

Claro que solo se va a mover a saltos o pocos cm, porque lo has puesto en el Update pero dentro de unas condiciones, estás diciendo que el movimiento se produzca cuando :    if(Input.GetKeyDown("e") && isOpen == false), eso es un instante porque el objecto solo se mueve en el instante cuando pulsas la tecla, después no. Translate es una función que calcula el movimiento cada fotograma por tanto para que se mueva tiene que ser llamada continuamente. Después de darte esta chapa porque quiere que lo comprendas, no solo lo pongas sin saber; te propongo una solución:

Puedes sacar el Translate de cualquier condicional y la dirección le pones una variable tipo Vector3 o Vector2. Luego pones que si la puerta esta abierta la dirección sea la que quieras que se mueva y si está cerrada no. Además deberías añadirle un trigger o una distancia de carrera de la puerta, sino se moverá infinitamente.

Saludos

Ups en eso no lo habia pensado yo, vi lo de que la velocidad era 200 y ya el resto no lo mire xD

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...