Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: kalm97 en Noviembre 15, 2015, 06:51:28 PM

Título: Cambio de direccion segun lado donde se apunte
Publicado por: kalm97 en Noviembre 15, 2015, 06:51:28 PM
como podría hacer que cuando yo este a la derecha el proyectil vaya a la derecha y cuando yo este viendo a la izquierda el se dispare hacia la izquierda tengo este código para que se mueva...using UnityEngine;
using System.Collections;public class MoverR : MonoBehaviour {    public float velocidad = 4;
    public GameObject F;

    public float L = 0.8f;
    void Start () {    }    void Update () {
         transform.Translate (Vector3.right * Time.deltaTime * velocidad, Camera.main.transform);

        Destroy (F, L);
        }
} con esto se mueve y despues de un sierto tiempo se destruye, como ven el vector es right como ago para que cuando yo este en otro sentido eso cambie a left...
Título: Cambio de direccion segun lado donde se apunte
Publicado por: brok en Noviembre 15, 2015, 07:46:12 PM
Aqui tienes un codigo que apunta donde pones el puntero del raton.using UnityEngine;public class PlayerMovement : MonoBehaviour
{
    public float speed = 6f;    private Vector3 mover;
    private Animator anim;
    private Rigidbody playerRigidbody;
    private int floorMask;
    private float camRayLeng = 100f;    void Awake()
    {
        anim = GetComponent<Animator>();
        playerRigidbody = GetComponent<Rigidbody>();
        floorMask = LayerMask.GetMask("Floor");
    }    void FixedUpdate()
    {
        float h = Input.GetAxisRaw("Horizontal");
        float v = Input.GetAxisRaw("Vertical");        Move(h, v);
        Turning();
        Animacion(h, v);    }
    
    void Move(float h, float v)
    {
        mover.Set(h, 0f, v);
        mover = mover.normalized * speed * Time.deltaTime;
        playerRigidbody.MovePosition(transform.position + mover);
    }    void Turning()
    {
        Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit floorHit;
        if (Physics.Raycast(camRay, out floorHit, camRayLeng, floorMask))
        {
            Vector3 playerRaton = floorHit.point - transform.position;
            playerRaton.y = 0f;            Quaternion rotacion = Quaternion.LookRotation(playerRaton);
            playerRigidbody.MoveRotation(rotacion);
        }
    }
    void Animacion(float h, float v)
    {
        bool walk = !((v == 0) && (h == 0));
        anim.SetBool("andar", walk);
    }
} 
Título: Cambio de direccion segun lado donde se apunte
Publicado por: kalm97 en Noviembre 15, 2015, 08:05:30 PM
 Como aria para segun a que lado este el  mouse al momento se mueva el projectil en el axis vertical.? segun el Script que tengo ariba..
Título: Cambio de direccion segun lado donde se apunte
Publicado por: GSG3D en Noviembre 15, 2015, 08:28:46 PM
No explicas como mueves tu personaje, porque seria sencillo si pulsas la tecla A el personaje mire a la izquierda por lo cual la direccion del proyectil, pero si te guias por apuntado por el mouse con una vista en 3ra persona seria tema de calcular el vector normal entre la posicion inicial y la "posicion del mouse".
Título: Cambio de direccion segun lado donde se apunte
Publicado por: kalm97 en Noviembre 15, 2015, 09:49:12 PM
El personaje se mueve con esto void Update () {         if (Input.GetAxis ("Horizontal") < -0.1f) {            transform.localScale = new Vector3(-1, 1, 1);        }
        if (Input.GetAxis ("Horizontal") > 0.1f) {
            
            transform.localScale = new Vector3(1, 1, 1);
        }es un personaje 2d, y este codigo esta en otro script llamado "Player" y el de ariba esta en "Move"
Título: Cambio de direccion segun lado donde se apunte
Publicado por: GSG3D en Noviembre 15, 2015, 10:00:07 PM
Solo estas tomando 2 posiciones, ademas que no lo estas rotando sino escalando cosa que no se porque.
Utiliza/Investiga las funciones Input.GetKeyDown() y transform.rotation, y para mover el pj utiliza transform.Traslate
Título: Cambio de direccion segun lado donde se apunte
Publicado por: Ness en Noviembre 16, 2015, 12:35:07 AM
[quote author=kalm97" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34432" data-ipsquote-contentcommentid="123531">como podría hacer que cuando yo este a la derecha el proyectil vaya a la derecha y cuando yo este viendo a la izquierda el se dispare hacia la izquierda tengo este código para que se mueva...using UnityEngine;
using System.Collections;public class MoverR : MonoBehaviour {    public float velocidad = 4;
    public GameObject F;

    public float L = 0.8f;
    void Start () {    }    void Update () {
         transform.Translate (Vector3.right * Time.deltaTime * velocidad, Camera.main.transform);

        Destroy (F, L);
        }
} con esto se mueve y despues de un sierto tiempo se destruye, como ven el vector es right como ago para que cuando yo este en otro sentido eso cambie a left...[/quote]HAY UNA SOLUCIÓN MUY CENICILLA SI PERSONAJE ES ALGO ISA COMO THE KID EN I WANNA BE THE GUY("SI NO SABES CUAL ES ESTE PERSONAJE ES QUE TIENES VIDA SOCIAL XD"), SOLO DISPARA HACIA LA IZQUIERDA O LA DERECHA PUEDES CREAR DOS PREFAC DE DISPARO UNO QUE VALLA HACIA LA IZQUIERDA Y OTRO HACIA LA DERECHA , LE PONES UNA CONDICION DEPENDIENDO LA ESCALA DE TU PERSONAJE: PUBLIC GAMEOBECT  DISPAROIDERECHA ;PUBLIC GAMEOBECT  DISPAROISQUIERDA ; VOID UPDATE(){EJEMPLO:IF(IMPUT.KEYDOWN(KEYCODE.X) == TRUE && TRANFORN.LOCALSCALE > 0.1F ){INSTANTIATE(DISPAROISQUIERDA );}  IF(IMPUT.KEYDOWN(KEYCODE.X) == TRUE && TRANFORN.LOCALSCALE < -0.1F ){INSTANTIATE(DISPAROIDERECHA );

Título: Cambio de direccion segun lado donde se apunte
Publicado por: kalm97 en Noviembre 16, 2015, 02:29:01 AM

grasias por la solucion pero ya llegue a que funcione pero ahora tengo otro problema esque al aplicar estoif(Input.GetKeyDown(KeyCode.D)){
            this.transform.Rotate (Vector3.up, 180);

        }cada ves que pulso D rota de un lado a otro como ago para 180 sea el grano 180 para yo poder hacer un segundo if con la letra A y  que sea igual a grado 0 no se si me di a comprender que sean grados fijos..
Título: Cambio de direccion segun lado donde se apunte
Publicado por: GSG3D en Noviembre 16, 2015, 02:37:56 AM
Te falta utilizar un boleano, ya que si ya estas en esa posicion no haga la rotacion sino la traslacion, y por cierto la otra alternativa es inadecuada.
Y toma apuntes y piensa que pasa si apreto esto y etc, lo que llamariamos peusocodigo.
Título: Cambio de direccion segun lado donde se apunte
Publicado por: kalm97 en Noviembre 16, 2015, 02:55:57 AM
Solo me quedan 2 cosas y ya no les molesto porque el resto ya se hacer, el boolean no lo se aplicar para que cuando aga el cambio de dirrecion solo aga una vez 180 y una vez 0 y tengo el problema del prefab que solo se mueve a la derecha porque esta puesto Vector3.right no  se como hacer para que se dispare hacia la X hacia donde esta viendo el personaje....void Update () {            
        transform.Translate(Vector3.right * Time.deltaTime * velocidad, Camera.main.transform);}eso si me pueden ayudar me alegran la vida, porfavor ayudenme ya busque por todo lado y no se como hacer..  Grasias por su atencion...
Título: Cambio de direccion segun lado donde se apunte
Publicado por: kalm97 en Noviembre 16, 2015, 04:05:58 PM
como ago para que en vez de vector right el vector se mueva en la x asi cuando se de la vuelta el personaje y dispare se vaya el projectil en la x