Noticias

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

Como Agregar Time.deltaTime En transform.position ? Solucionado con un evento "update"

Iniciado por BennyDz, Junio 23, 2015, 11:08:47 PM

Tema anterior - Siguiente tema
buenas tardes amigos, espero me ayuden ya que estoy haciendo un script de una plataforma que sube mientras el player esta arriba y que regresa a su posición original cuando el player sale de la plataforma.  todo me funciona bien solamente que se regresa de golpe quisiera que se regrese como va subiendo de lento.
 
aquí mi script :

using UnityEngine;
using System.Collections;
 
public class ActivarScript : MonoBehaviour {
// Use this for initialization
 
public int objVel = 10;
 
void Start (){

void OnTriggerStay (Collider player){
   if (player.gameObject.tag=="Player")    {
Debug.Log("Stas aqui");
transform.Translate(Vector3.up * objVel * Time.deltaTime);
}
}
void OnTriggerExit (Collider player){
if (player.gameObject.tag=="Player"){
Debug.Log("Saliste");
transform.position = new Vector3(32, 3, 0);
 
}


hay varias formas de resolver tu dilema, 
 
1:dentro deupdate puedes agregar una condicion, que cuando se salga de la plataforma lo activas y dentro de ahi vas bajando la plataforma hasta que llegue a donde tu deseees.
 
 
2: mediante una coroutine, activala cuando entres a la funcion de trigger exit, y cada cierto tiempo mediante un for o while, vas modificacion la posicion, 
 
mas tarde te puedo dar un ejemplo claro, jaja que llegue a casa saludos.


Puedes usar Transform.position = Vector3.SmoothDamp()
 
Revisa la documentación de Unity para saber más acerca de cómo se usa...


    public int objVel = 10;
    public int status = 0;
    public float LimiteDown=3f;
    public float LimiteUp = 10f; // numero puesto de manera de prueba
    //status = 0 , libre
    //status = 1, subiendo
    //status = -1, bajando
    // Use this for initialization
    void Start ()
    {
        status = 0;
    }
   
    // Update is called once per frame
    void Update ()
    {
        MovPlafaforma ();
    }
    void MovPlafaforma(){
        if (status == 0)
            return;
 
        transform.Translate(Vector3.up * (objVel*status) * Time.deltaTime);
           
        Vector3 vec = transform.position;
   
        if (vec.y <= LimiteDown) {
            status = 0;
            vec.y = LimiteDown;
        } else if (vec.y >= LimiteUp) {
            status = 0;
            vec.y = LimiteUp;
        }
        transform.position = vec;
 
    }
    void OnTriggerEnter (Collider player)
    {
        if (player.gameObject.tag=="Player")    {
            status = 1;
        }
    }
    void OnTriggerExit (Collider player){
        if (player.gameObject.tag=="Player"){
            status = -1;
        }
    }

 amigo lo acabo de escribir segun yo si funciona , jajaja pero no lo he calado , pero pueste debe de dar una buena idea de como implementarlo, obvio hay formas mejores de hacerlo, pero pues esta es muy basica, espero te sirva jeje 

Vector3.Lerp...Saludos
 
PD:¡Diossss, como odio cuando algunos escriben en "espanglish"!

Cita de: ACarranza date=1435170789

    public int objVel = 10;
    public int status = 0;
    public float LimiteDown=3f;
    public float LimiteUp = 10f; // numero puesto de manera de prueba
    //status = 0 , libre
    //status = 1, subiendo
    //status = -1, bajando
    // Use this for initialization
    void Start ()
    {
        status = 0;
    }
   
    // Update is called once per frame
    void Update ()
    {
        MovPlafaforma ();
    }
    void MovPlafaforma(){
        if (status == 0)
            return;
 
        transform.Translate(Vector3.up * (objVel*status) * Time.deltaTime);
           
        Vector3 vec = transform.position;
   
        if (vec.y <= LimiteDown) {
            status = 0;
            vec.y = LimiteDown;
        } else if (vec.y >= LimiteUp) {
            status = 0;
            vec.y = LimiteUp;
        }
        transform.position = vec;
 
    }
    void OnTriggerEnter (Collider player)
    {
        if (player.gameObject.tag=="Player")    {
            status = 1;
        }
    }
    void OnTriggerExit (Collider player){
        if (player.gameObject.tag=="Player"){
            status = -1;
        }
    }

 amigo lo acabo de escribir segun yo si funciona , jajaja pero no lo he calado , pero pueste debe de dar una buena idea de como implementarlo, obvio hay formas mejores de hacerlo, pero pues esta es muy basica, espero te sirva jeje 
 
 
 
Amigo muchas gracias por tomarte la molestia de escribirmelo xD! me funciono muy bien   me gusto el script asi tenia pensado hacerle ponerle con limites de "y" xD solo que no sabia declarar un status ahora ya lo se y me servira para hacer mas scripts. si despues ocupo alguna ayuda te mando mp, y ya me colaboras y yo te colaboro con algun grafico que estudio diseño grafico xD saludos amigos y muchas gracias. 

Cita de: pioj date=1435162766Puedes usar Transform.position = http://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html" rel="external nofollow">Vector3.SmoothDamp()
 
Revisa la documentación de Unity para saber más acerca de cómo se usa...
 
voy a revisar para que sirve quizas me facilite otras cosas, si tienes algún ejemplo de como se usa te lo agradecería.

Cita de: Uli date=1435185909Vector3.Lerp...Saludos
 
PD:¡Diossss, como odio cuando algunos escriben en "espanglish"!
 
gracias por tu tiempo amigo, si tienes algún ejemplo de como se usa te lo agradecería, y mucho mejor si me dijeras como implementarlo a mi script,  si no me tocara googlear. y quien escribió espanglish aquí? si lo dices por el titulo de mi post, solo escribí tal cual como se llaman las funciones xD saludos.

a claro amigo, de hecho ese fue super rapido, usando la funcion Vector3.Lerp, se puede hacer "suavizado" el movimiento, ahi cuando gustes te echo mano en programacion, soy noob pero de algo puedo ser util.
 
saludos


Cita de: ACarranza date=1435263195a claro amigo, de hecho ese fue super rapido, usando la funcion Vector3.Lerp, se puede hacer "suavizado" el movimiento, ahi cuando gustes te echo mano en programacion, soy noob pero de algo puedo ser util.
 
saludos
dale bro, agregame al facebook y te muestro en lo que estoy trabajando  www.facebook.com/bennymusik o dame algún contacto tuyo.

Hola,
 
   Solo necesitas dos vectores, el de posición actual y al que quieres llegar...lo de espanglish era una joda por "script y player", pero veo que lo usan mucho acá. Para saber mejor como funciona entra a la documentación de Unity, y tienes ejemplos ahí...
 
Saludos,

Cita de: Uli date=1435346063Hola,
 
   Solo necesitas dos vectores, el de posición actual y al que quieres llegar...lo de espanglish era una joda por "script y player", pero veo que lo usan mucho acá. Para saber mejor como funciona entra a la documentación de Unity, y tienes ejemplos ahí...
 
Saludos,
 
pues esque es mas entendible ya player y scripts en programacion jej, si ya tengo un script que hace eso de ir a waypoints. pero ya lo solucione con el script que me ayudaron. funciona muy bien. 

Etiquetas: