Noticias

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

Disparar projectil

Iniciado por kalm97, Noviembre 16, 2015, 05:17:53 PM

Tema anterior - Siguiente tema
Noviembre 16, 2015, 05:17:53 PM Ultima modificación: Noviembre 16, 2015, 05:21:13 PM por kalm97
como ago para que el clon cuando aga spawn se mueva hacia delanteVoid Update(){if (Input.GetButtonDown ("Fire1")) {              shoot();        }}void shoot(){
        GameObject clone;
        if (projectile) {        
            clone = Instantiate (projectile, transform.position, transform.rotation) as GameObject;
            
        }
    } Grasias de antemano

Pues el clon tiene que llevar un script que le diga que hacer, en caso de que quieras ir hacia delante, cosa que no haces con el uso correcto de la gramática, utiliza vector3.forward.

Noviembre 16, 2015, 05:51:38 PM #2 Ultima modificación: Noviembre 16, 2015, 05:56:22 PM por kalm97
le puse el forward...void shoot(){
        Rigidbody2D clone;
        if (projectile) {        
            clone = Instantiate (projectile, transform.position, transform.rotation) as Rigidbody2D;
            transform.Translate(Vector3.forward * Time.deltaTime, Camera.main.transform); // Aqui le digo que se mueva 
            
        }
    }No ocurre nada....

Se mueve pero el objeto que tiene el script, no el clone. Lo que necesitas es añadirle un script al proyectil que se mueva desde el momento en el que se instancia hasta que se destruya:
void Start ()
{
    Destroy(gameObject, 3);
}
void Update ()
{
    transform.Translate(tranform.forward);
}
Y no es lo mismo Vector3.forward (0,0,1) que transform.forward (vector diferente a 0,0,1)

me coloca el 
transform.Translate(tranform.forward);
 el transform,forward en rojo como error...

Había escrito mal transssssform 

se mueve en eje Z y si lo cambio a right solo se mueve a la derecha   ayudenme voy dias sin dormir....

Pues fíjate si el clon esta rotado, debería funcionar, sino prueba a girar tu mismo el proyectil desde el editor y me dices si sigue yendo en el eje z.

Noviembre 17, 2015, 04:20:04 PM #8 Ultima modificación: Noviembre 17, 2015, 04:23:32 PM por kalm97
si lo ago con forward y lo giro 135 grados cambia de sentido y si le pongo right y le ago a 90 cambia el sentido... pero a 135 apenas se ve el grafico y a 90 no se ve  tendria que girar en el eje x para cuando se gire cambie,  pero no hay una forma de que cuando el personaje este a la derecha en el sript se active un if que se mueva a la derecha y cuando el personaje este a la izquierda aya otro if en los update que diga a la izquiersa.??? 

Eso es lo que tienes que pensar y esos son los planteamientos que se hacen antes de empezar a escribir, tú mismo te estás dando la respuesta, para saber cuándo está mirando a cada lado fíjate en qué cambia en tu trasform, supongo que lo que cambiará será la rotación del objeto, si la rotación en el eje X es mayor que A o menor que B o que esté entre C y D... etc. Puedes poner las condiciones que quieras!!El transform.forward debería funcionar, seguramente tengas algún fallo haciendo la instancia, o tal vez no rotas el objeto que instancia el proyectil. Son fallos que tienes que ver tú Aún así sigue echándole cabeza, que todos empezamos igual...

le ise asi...if (Input.GetKeyDown (KeyCode.D)) {
            this.transform.Rotate (Vector3.up, 180f);
            right = true;
        }
        if(Input.GetKeyDown(KeyCode.A)){
            this.transform.Rotate (Vector3.up, -180f);
            right = false;
        }y puse en el del projectil... void Start () {
        player = GameObject.FindGameObjectWithTag ("Player").GetComponent<Player> ();
        Destroy(gameObject, T);
    }
    void Update (){    
        if (!cambio) {
        player.right = true;
        shootR();        
        }
        if(cambio){
        player.right = false;
        shootL();
        }
    }
    void shootR(){
        transform.Translate (Vector3.right * Time.deltaTime, Camera.main.transform);
    }
    void shootL(){
        transform.Translate (Vector3.left * Time.deltaTime, Camera.main.transform);
    } pero no funciona se sigue moviendo en right creo q estoy mal en el sript del personaje me puedes decir en q estoy mal??

[quote author=kalm97" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34435" data-ipsquote-contentcommentid="123607">se mueve en eje Z y si lo cambio a right solo se mueve a la derecha http://unity3d.com/es/learn/tutorials/topics/scriptingdeja tu proyecto aun lado temporalmente y estudia los tutos que hay aqui, y al final creeme que podras hacer lo que pides y mucho mas :)

Seguramente siempre entre en el mismo condicional, pon un Debug en el update del proyectil para saber si cambio se vuelve false en algún momento.

en el player me di cuenta que no cambia el bool, inicie el juego para comprobar en la pantalla del script y no cambia a false o a true los bool no se si compreden los cuadritos esos del panel no cambian... creo q esta mal algo del player...

No cambian si tu no pones una orden para que cambien, sin una base de programación se te va a hacer muy difícil avanzar en un juego por fácil que parezca 

Etiquetas: