Jump to content

xcqoax

Fosiles
  • Content Count

    30
  • Joined

  • Last visited

Posts posted by xcqoax


  1. por fin... no se si sea la mejor solución o la mas practica pero lo consegui.

    public float smooth = 0.1f;
        private Vector3 newPosition;

        void Awake ()
        {
            newPosition = transform.position;
        }

        void Update () 
        {
            cambioposicion();
        }

        void cambioposicion()
        {
            Vector3 posicionA = new Vector3 (113, 5, 0); 
            Vector3 posicionB = new Vector3 (113, -2, 0); 

            if (this.transform.position.y > 4)
                newPosition = posicionB;
            if (this.transform.position.y < -1)
                newPosition = posicionA;

            transform.position = Vector3.Lerp (transform.position, newPosition, Time.deltaTime *smooth);
        }
    }

    y para que comenzara a funcionar el objeto lo coloque en el V3(113,4.1,0) para que tomara bajara hasta el destino que seria posicionB y cuando transform.position.y sea menor que -1, tendria que subir hasta la posiciónA.

     


  2. no pude dormir tratando de buscar una posible solución q incluso use un vector3 lerp. de este modo

    tiempo = Mathf.PingPong (Time.deltaTime*velocidad, distancia)+altura;
            transform.position = Vector3.Lerp (inicio.position, destino.position, tiempo);

     

    tratare de dejarlo unos  minutos ya hasta me duele la cabeza...  incluso busque ejemplos y tutorial des Mathf.PingPong pero sin mucha ayuda,,,

     


  3. la api lo unico q tiene es esto: PingPongs el valor t, de manera que nunca es mayor que la longitud y nunca menor que 0.
    El valor devuelto se moverá hacia atrás y adelante entre 0 y longitud.

    transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z);

    siendo en este caso mi distancia 6. por cierto hice publc velocidad pero en el inspector lo tengo como 1.

    link api. http://docs.unity3d.com/ScriptReference/Mathf.PingPong.html


  4. checando en internet lei que dentro de Unity esta Mathf.PingPong, el cual serviria  para lo que requiero ya que moveria la plataforma del punto A al punto B y retornaria de nuevo al punto A. ya realice el script pero no funciona. si alguien de ustedes me pudiese orientar de mi error se lo agradecere

     

      public float distancia = 6f;
        public float velocidad;
        float Posy;

        void update ()
        {
            Posy = Mathf.PingPong (Time.time * velocidad, distancia);
            transform.position = new Vector3 (transform.position.x,Posy, transform.position.z);
        }
    }


  5. he leido un poco y con ayuda de otro amigo que me comento de las corutinas, logre hacer otro script. en esta ocasion la plataforma ya sube y baja pero a una velocidad descontrolada. agradecere si alguien me pudiera hacer alguna observación de porque es tan rapido el movimiento de la plataforma.

    using UnityEngine;
    using System.Collections;

    public class islamovil : MonoBehaviour {
        public Transform inicio;
        public Transform destino;
        public float Velocity = 1f;
        float tiempo;
        float distance;
        float distanceVel;
        float movement;

        private void Start () 
        {
            tiempo = Time.time;
            distance = Vector3.Distance(inicio.position, destino.position);
            StartCoroutine(goUp());
        }

     private IEnumerator goUp()
        {
                distanceVel = (Time.time - tiempo) * Velocity;
                movement = distanceVel / distance;
                transform.position = Vector3.Lerp (inicio.position, destino.position, movement);
            yield return null; 
            StartCoroutine(goDown());
        }

        private IEnumerator goDown()
        {
            distanceVel = (Time.time - tiempo) * Velocity;
            movement = distanceVel / distance;
            transform.position = Vector3.Lerp (destino.position, inicio.position, movement);
            yield return null;
            StartCoroutine (goUp());
        }
    }

     


  6. si es verdad, es que al momento de tratar de analizar un poco mas me puse a colocarle lineas y una de ellas fue la

    tamañovecbaj = Vector3.Distance (destino.position, inicio.position);// calcula el tamañaño del vector para hacerla bajar.

    para tratar de hacer que baje pero si, tienes la razon. solo que no lo quite porq ya me tenia un poco mareado esto.

    gracias por tu observación.

     


  7. he estado intentando hacer un script para plataforma que suba y baje continuamente. logro hacer que la plataforma se mueva pero no continua haciendo los movimientos. he estado algunos dias  buscando referencia de ello por mas no logro encontrar el detalle. si alguien puede ayudar con alguna orientación   (no hacer el script) se lo agradecre.

     

    using UnityEngine;
    using System.Collections;

    public class pruebamovil : MonoBehaviour
    {
        public Transform destino;
        public Transform inicio;
        public float velocidad=1f;
        float tiempo;
        float tamañovec;
        float tamañovecbaj;
        float movimiento;
         
        void Start ()
        {
            tiempo = Time.time;
            tamañovec = Vector3.Distance(inicio.position, destino.position); // calcula el tamaño del vector para subir plataforma.
            tamañovecbaj = Vector3.Distance (destino.position, inicio.position);// calcula el tamañaño del vector para hacerla bajar.
        }

        void Update ()
        {
            float distanciavel = (Time.time - tiempo) * velocidad;
            movimiento = distanciavel / tamañovec;
            subir ();
        }
        public void subir ()
        {
            transform.position = Vector3.Lerp ( inicio.position, destino.position,movimiento);
            bajar ();
        }
        public void bajar ()
        {
            transform.position = Vector3.Lerp ( destino.position, inicio.position,movimiento);
            subir ();
        }
    }


  8. tengo una duda sobre como agarrar un objeto para que el personaje lo agarre y no suelte y al dar click suelte dicho objeto. Por ejemplo, que mi personaje parado enfrente de un cubo al presionar la tecla "f" este se eleve y se mueva de acuerdo al movimiento de la cámara y cuando vuelva a presionar la tecla "f" lo suelte y caiga. Por medio de que función o comando del APi de unity se podria hacer, para que lea el API de unity. 

    De antemano gracias por su apoyo


  9. saludos,  por cuestion de proyecto debo cambiar a c#,  como ven tengo un  script de JS, mi problema es que se me complica un poco el como podria cambiarlo a c#.  agradeceria si alguieme  apoyase con el codigo que he intentado hacer..

    var distancia : float =5;
    var cubo: Transform;

    function Update()
    {
    var hit: RaycastHit;
    if(Physics.Raycast(transform.position, Vector3.forward,hit,distancia))
       {
       if(hit.collider.gameObject.tag=="sofa");
          {
          cubo.gameObject.SetActive(false);
          }
       }
    }

    -----------en c#-------------------

    using UnityEngine;
    using System.Collections;

    public class NewBehaviourScript : MonoBehaviour
    {

        void Update ()
        {
            Transform cubo; // dado q en js se antepone la palabra "var", luego el nombre de la variable y de ultimo el tipo de variable, yo lo coloque de lamanera q se hace en c# el tipo de var y el nombre...
            RaycastHit hit;
            float distancia;
            if(Physics.Raycast(transform.position, Vector3.forward,out hit,distancia))
                {
                    if(hit.collider.gameObject.tag=="cubo");   // mi problema es hacer que si la variable hot colisiona con el objeto q tiene la etiqueta cubo...
                    {
                        cubo.gameObject.SetActive(false);
                    }
                }
        }
    }

    agradecere sus comentarios, de este modo ire aprendiendo a que si solo pido el script.. saludos


  10. saludos, ultimamente tengo algunos problemas con el script de raycast; es decir, al momento de detectar la colision no se ejecuta el codigo ( como ejemplo,  al detecta la colision con un modeolo que contenga una determinada etiqueta debera activarse una luz. pero al ejecutarlo no sucede nada). el modelo lo importe de la pagina de tf3dm

    no se si alguien tiene el mismo problema. agradecere sus comentarios.

    el objeto tiene mesh collider. cuando uso primitivas en unity el corre perfectamente.


  11. var distancia : int =5;             //distancia del raycast
    var cubo: Transform;             //objeto en cuestion

    function Update()
    {
    var hit: RaycastHit;
    if(Physics.Raycast(transform.position, Vector3.forward,hit,distancia))  //es hit,distancia no hit.distancia
       {
       if(hit.collider.gameObject.tag=="cubo");          //si el raycast colisiona con el objeto con la etiqueta cubo
          {
          cubo.gameObject.SetActive(false);             // el objeto cubo debe desactivarse.
          }
       }
    }

     

    con este codigo al acercarme al cubo se desactiva. de todos modos gracias a los que respondieron


  12. hola (si, nuevamente). ya habiendo solucionado el detalle de los triggers y las notas en este momento me encuentro atorado con el hecho de estar utilizando el Raycast. siendo este mi codigo:


    var distancia : int =5;             //distancia del raycast
    var cubo: Transform;             //objeto en cuestion

    function Update()
    {
    var hit: RaycastHit;
    if(Physics.Raycast(transform.position, Vector3.forward,hit.distancia))
       {
       if(hit.collider.gameObject.tag=="cubo");          //si el raycast colisiona con el objeto con la etiqueta cubo
          {
          cubo.gameObject.SetActive(false);             // el objeto cubo debe desactivarse.
          }
       }
    }

    dicho script ya lo agregue al personaje.  mucho agradecere sus comentario sobre esta cuestion del raycast. gracias

     

     


  13. ya logre mostrar el texto en pantalla al momento de acercarme al objeto.

    var texto: Transform;   //la posicion del texto en 3D

    function OnTriggerEnter (col:Collider)   //si entra en el trigger guarda colision
    {
    if (col.gameObject.tag=="player")   // si la colison fue con un game object con la etiqueta player
      {
    texto.gameObject.SetActive(true);  // se actuivara el gameibject texto.
      }
    }  
    function OnTriggerExit (col:Collider)  // al salir de la colision se desctiva el gameobject texto
    {
    if (col.gameObject.tag=="player")   
      {
    texto.gameObject.SetActive(false);
      }
    }

     

    no se si sea el mejor codigo pero al menos a mi me funciona. por cierto. el texto debe estar en la camara del jugador. si a alguien le sirve o lo puede mejorar se agradecere. y gracias iRobb


  14. Hola saludos, tengo un problema. deseo que tocar un objeto (trigger) me muestre un texto en pantalla. cree el uitext y lo ancle a dicho objeto pero no consigo que cuando yo entre al trigger se muestre dicho objeto y cuando salga desaparezca. al objeto (trigger) le puse el script. agradecere mucho su ayuda.

    function OnTriggerEnter (col:Collider)

    {

    GetComponentInChildren(GUIText).enabled=true;

    } 

    function OnTriggerExit (col:Collider)

    {

    GetComponentInChildren(GUIText).enabled=false;

    }

     


  15. Hola saludos, tengo un problema. deseo que tocar un objeto (trigger) me muestre un texto en pantalla. cree el uitext y lo ancle a dicho objeto pero no consigo que cuando yo entre al trigger se muestre dicho objeto y cuando salga desaparezca. al objeto (trigger) le puse el script. agradecere mucho su ayuda.

    function OnTriggerEnter (col:Collider)

    {

    GetComponentInChildren(GUIText).enabled=true;

    } 

    function OnTriggerExit (col:Collider)

    {

    GetComponentInChildren(GUIText).enabled=false;

    }

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...