Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Joksan en Abril 11, 2018, 05:02:05 AM

Título: Script Para Disparos?
Publicado por: Joksan en Abril 11, 2018, 05:02:05 AM
Hola, estoy haciendo un juego en unity para el movil es tipo shooting solo con duelos, el problema es que necesito un script para una revolver que tenga solo una bala y a la hora de disparar sea aleatoreamente algo asi como ruleta rusa, ya tengo mi modelo 3d y las animaciones solo que no se como implementar el script
Título: Script Para Disparos?
Publicado por: Bamf en Abril 11, 2018, 11:16:38 AM
Pues en el gameobject le pones el script de la bala o la pistola, si no recuerdo mal en el tutorial de unity de los tanques te enseña un script de disparar. Échale un ojo!
Título: Script Para Disparos?
Publicado por: Joksan en Abril 11, 2018, 11:55:06 PM
si todo eso lo tengo en claro se como hacer con el script que el arma dispare pero quiero hacer que un revolver gire el cargador y inserte una bala pero que a la hora de disparar no salga al primer disparo que sea aleatorio o por suerte
tengo la animacion insertando la bala pero no se como hacer el script a parte de que descontinuaron java
Título: Script Para Disparos?
Publicado por: Igor en Abril 12, 2018, 01:38:19 AM
Random.Range(0,6) te dada un numero aleatorio entre 0 (incluido) y 6 (Excluido) ...osea: 0, 1, 2, 3, 4 o 5,  (que son seis numeros)
 

if (Random.Range(0,6) == 0) {
   //si hay bala  
   disparar();
}

 
si te da cero disparas, con el 1,2,3,4 y 5 no disparas...
 
no se si te servira
Título: Script Para Disparos?
Publicado por: Joksan en Abril 12, 2018, 03:53:53 AM
ok muchas gracias lo voy a intentar
Título: Script Para Disparos?
Publicado por: Joksan en Abril 27, 2018, 12:32:43 AM

//Disparo, Sonido
    public GameObject HitAcertado;
    //public GameObject EfectoDisparo;
    public GameObject HuecoPared;
    GameObject hueco;
    public float Distancia;
    float TiempoDisparo;
    [SerializeField]
    float _velocidad;
    RaycastHit hit;
    public AudioClip sonidoDisparo;
    //Fin Disparo y Sonidos
    //ANIMACIONES Y MUNICION
    public int Balas = 1;
    public int ComprobarRecarga = 1;
    public int Cargador = 6;
    Animation _animArma;
    [SerializeField]
    public float velocityAnimation;
        //FIN ANIMACIONESY MUNICION
    void Start ()
    {
         
        _animArma = GetComponent<Animation>();
       
        //HitAcertado.SetActive(false);
       // EfectoDisparo.SetActive(false);
}


void Update ()
    {
        if (Input.GetButton("Fire1") && !_animArma.IsPlaying("Recargar"))
        {
            TiempoDisparo += Time.deltaTime;
           
            if (TiempoDisparo >= _velocidad && Balas >= 1)
            {
                _animArma["Disparar"].speed = velocityAnimation;
                _animArma.Play("Disparar", PlayMode.StopAll);
                Camera.main.GetComponent<AudioSource>().PlayOneShot(sonidoDisparo, 0.3f);
                //EfectoDisparo.SetActive(true);
                Balas -= 1;
                Ray ray = new Ray(Camera.main.transform.position, Camera.main.transform.forward);
                if(Physics.Raycast (ray, out hit, Distancia))
                {
                    if(hit.collider.gameObject.tag == "Pared")
                    {
                        //hueco = Instantiate(HuecoPared, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)) as GameObject;
                        Debug.Log("Acertaste");
                        HitAcertado.SetActive(true);
                    }
                }
                TiempoDisparo = 0;
                //Destroy(hueco, 3.5f);
            }
        }
        if (Balas == 0 && Cargador > 1 && !_animArma.IsPlaying("Disparar"))
        {
         
            _animArma["Recargar"].speed = 1f;
            _animArma.Play("Recargar", PlayMode.StopAll);
            Recargar();
        }
       
        if (Input.GetButton("Fire2") && Cargador > 1 && !_animArma.IsPlaying("Disparar"))
        {
            Balas = 0;
            _animArma["Recargar"].speed = 1f;
            _animArma.Play("Recargar", PlayMode.StopAll);
            Recargar();
        }
}
    void Recargar()
    {
        Balas += ComprobarRecarga;
        Cargador -= ComprobarRecarga;
       
    }
}

 
oye me podrias ayudar, tengo mi script y e visto tutoriales de random range pero la verdad no tengo la menor idea de implementarlo tengo un cargador donde le caben 6 balas y donde solo se dispara una pero creo que tengo que usar otra variable para que el cargador tenga solo 1 bala y dispare 6 veces