Noticias

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

Comprobación de X en un objeto

Iniciado por chetuu16, Mayo 06, 2016, 11:31:01 AM

Tema anterior - Siguiente tema
Hola, soy novato en este mundillo asi que me perdonais si digo o hago alguna barbaridad using UnityEngine;
using System.Collections;

public class MovimientoMalo : MonoBehaviour {

//__________Variables__________
public Vector3 velIzq;
public Vector3 sitioDetencion;
public Vector3 velDetenido;


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
   
   //Movimiento hacia la izquierda (depende del valor en X que pongamos en velIzq)
   this.transform.position = this.transform.position + (velIzq*Time.deltaTime);

   /*Comprueba la X, la Y y la Z del transform y
   si coincide con la X, la Y y la Z de velDetenido
   el valor de X en velIzq se pone a 0 */
   if (this.transform.position == sitioDetencion){

      velIzq = velDetenido;

   } 

y no es más fácil que hagas que se detenga con un trigger?

Hol,a y gracias por la respuesta.Si no me equivoco, el trigger es para detectar cuando colisiona con algun objeto, pero yo quiero que se detenga en la cordenada que yo le indique.De nuevo, soy nuevo, si me equivoco disculpen 

Podrías utilizar un método de interpolador de posiciones. 
transform.position = Vector3.Lerp(transform.posiiton, new Vector3(10,10,10), * Time.deltaTime); 
Existen otros métodos como MoveTowars...Espero haberte ayudado. 

perdonad mi retraso, pero no se donde tengo que poner ese codigo 

A ver, lo que te sugería que hicieras es que coloques un cubo sin "skin" para utilizarlo como trigger. De esta manera, puedes decir que si entra (mírate OnTriggerEnter() ) se detenga. Sería una manera muy sencilla (creo) de hacer que se detenga el ¿player? . Además, podrías hacer un prefab que te sirviera para dejarlo en los puntos que te interese parar el personaje y sólo tendrías que arrastrarlo sobre la escena.Si quieres aumentar la precisión del lugar dónde quieres que se pare, haz el cubo más pequeño. Ignoro si, acaso, no es la solución óptima desde un punto de vista programación, pero es una solución sencilla que debería funcionar... Yo, desde luego, sería lo primero que probaría.  También puedes investigar lo que te ha sugerido Francoe1, aunque creo recordar  Lerp hace que se mueva de una posición a otra (no se detendría al llegar a un lado) - que alguien me corrija si estoy errado, plz- [quote author=francoe1 date=1462536821" data-ipsquote="" data-cite="francoe1" class="ipsQuote">transform.position = Vector3.Lerp(transform.posiiton, new Vector3(10,10,10), * Time.deltaTime);

Si lo que quieres es matar moscas a cañonazos, pues matamos moscas a cañonazos...
using UnityEngine;
using System.Collections;

public class Probar : MonoBehaviour {

    //__________Variables__________
    public Vector3 velIzq;
    public Vector3 sitioDetencion;
    public Vector3 velDetenido;

    // Use this for initialization
    void Start () {

}

// Update is called once per frame
void Update () {        
        transform.position = transform.position + (velIzq * Time.deltaTime);
        /*Comprueba la X, la Y y la Z del transform y
   si coincide con la X, la Y y la Z de velDetenido
   el valor de X en velIzq se pone a 0 */
        if (transform.position.x >= sitioDetencion.x)
        {

            velIzq = velDetenido;

        }
    }
}
 

Etiquetas: