Noticias

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

Doble Disparo

Iniciado por ramunda, Agosto 03, 2015, 03:07:36 PM

Tema anterior - Siguiente tema
Hola muy buenas aver si me podeis dar algun consejo o referencia de como hacer disparar 2 gameobjects con una bala con rigidbodi al apretar el boton de el mouse.La cosa es que tengo una nave simple que lleva 2 cañones uno en cada ala.E creado un script que va bien y dispara una especie de laser verde , este script esta añadido a un Empty con un Rigid Body.Bien , si clono dicho GO y lo pongo en la segundo cañon ...deberia disparar igual que el primero...pero no ...sale una cosa rara que no es el rayo.Aver si teneis alguna sujerencia de porque no disparan los dos a la vez.A , he probado a ponerle que el segundo cañon dispare en vez de con el boton 1 de el raton con el 2 y funciona pero claro me implica tener los 2 botones ocupados para 1 disparo.El script:
using UnityEngine;
using System.Collections;
public class disparosyrecargosnave : MonoBehaviour {
public Rigidbody Bala;
public float Velocidad = 80;
public float municion = 10;
public Animation reload;
float municionderecargo = 10;
public float municiontotal = 200;
///public static float municiontotal = 150;
public disparosyrecargos2 MyScriptShoot;
public float Conteo = 0;
public GUIText guimuni;
public GUIText guitotal;
public GameObject destello;
//public GameObject manoanim;
public GameObject expulsabalas;
public AudioClip recarga;
public AudioClip gunShot;
public AudioClip vacio;
//bool DisparoDual = true;

void Start (){

destello.active = false;
}

void Update (){

guimuni.text = "Balas " + municion.ToString();
guitotal.text = "Total Balas " + municiontotal.ToString();

   if (Input.GetButton("Fire1"))
   {
//if(Input.GetMouseButtonDown(0)){   
        Conteo = Conteo + 1;
       
    if(Conteo > 15){
    
     Conteo = 0;
}   
    if(Conteo == 15 && municion > 0 && municiontotal >= 0){
          
        
   Rigidbody clone;
   clone=Instantiate(Bala, transform.position, transform.rotation) as Rigidbody;
   clone.velocity = transform.TransformDirection(Vector3.forward * 400);
   municion -= 1;
         Destroy (clone,1.0f);
   GetComponent<AudioSource>().PlayOneShot(gunShot);
   
}
}
if(Input.GetKeyDown("r") && municiontotal > 0 && !Input.GetMouseButton(0) && !Input.GetMouseButton(1)){
reload.Play("pistolamueve");
municion = 0;
Invoke ("recargando",2);
    AudioSource.PlayClipAtPoint(recarga, transform.position, 1);
 
}

   if(Input.GetButton("Fire1")){

destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
destello.active = false;
}   
if (municion <= 0){
if(Input.GetButton("Fire1")){
expulsabalas.SetActive(false);
AudioSource.PlayClipAtPoint(vacio, transform.position, 1);
destello.active = false;
}   
}
}
void recargando (){


expulsabalas.SetActive(true);
if(municiontotal > 0){
municiontotal -= municionderecargo;
municion += municionderecargo;

}
if (municion > municionderecargo){
municion = municionderecargo;
}
}
}
  

Yo normalmente clono GameObjects,sustituye Bala para que sea un GameObject, y clonas la bala entera, no deberias tener ningun problema

Visita http://www.programacionwh.com encontraras tutoriales y muchas cosas .


Tambien puedes visitar mi canal de YouTube https://www.youtube.com/channel/UClSCTn0wPN1iFjED0yaoJUA



[quote author=ProgramacionWH" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15887" data-ipsquote-contentcommentid="101282">Yo normalmente clono GameObjects,sustituye Bala para que sea un GameObject, y clonas la bala entera, no deberias tener ningun problema por Gameobject Bala?

@ramunda Lo siento ramunda e estado fuera varias semanadas/dias,si a eso me referia

Visita http://www.programacionwh.com encontraras tutoriales y muchas cosas .


Tambien puedes visitar mi canal de YouTube https://www.youtube.com/channel/UClSCTn0wPN1iFjED0yaoJUA



[quote author=ramunda" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15887" data-ipsquote-contentcommentid="101134">Hola muy buenas aver si me podeis dar algun consejo o referencia de como hacer disparar 2 gameobjects con una bala con rigidbodi al apretar el boton de el mouse.La cosa es que tengo una nave simple que lleva 2 cañones uno en cada ala.E creado un script que va bien y dispara una especie de laser verde , este script esta añadido a un Empty con un Rigid Body.Bien , si clono dicho GO y lo pongo en la segundo cañon ...deberia disparar igual que el primero...pero no ...sale una cosa rara que no es el rayo.Aver si teneis alguna sujerencia de porque no disparan los dos a la vez.A , he probado a ponerle que el segundo cañon dispare en vez de con el boton 1 de el raton con el 2 y funciona pero claro me implica tener los 2 botones ocupados para 1 disparo.El script:
using UnityEngine;using System.Collections;
public class disparosyrecargosnave : MonoBehaviour {
public Rigidbody Bala;
public float Velocidad = 80;
public float municion = 10;
public Animation reload;
float municionderecargo = 10;
public float municiontotal = 200;
///public static float municiontotal = 150;
public disparosyrecargos2 MyScriptShoot;
public float Conteo = 0;
public GUIText guimuni;
public GUIText guitotal;
public GameObject destello;
//public GameObject manoanim;
public GameObject expulsabalas;
public AudioClip recarga;
public AudioClip gunShot;
public AudioClip vacio;
//bool DisparoDual = true;

void Start (){

destello.active = false;
}

void Update (){

guimuni.text = "Balas " + municion.ToString();
guitotal.text = "Total Balas " + municiontotal.ToString();

   if (Input.GetButton("Fire1"))
   {
//if(Input.GetMouseButtonDown(0)){   
        Conteo = Conteo + 1;
       
    if(Conteo > 15){
    
     Conteo = 0;
}   
    if(Conteo == 15 && municion > 0 && municiontotal >= 0){
          
        
   Rigidbody clone;
   clone=Instantiate(Bala, transform.position, transform.rotation) as Rigidbody;
   clone.velocity = transform.TransformDirection(Vector3.forward * 400);
   municion -= 1;
         Destroy (clone,1.0f);
   GetComponent<AudioSource>().PlayOneShot(gunShot);
   
}
}
if(Input.GetKeyDown("r") && municiontotal > 0 && !Input.GetMouseButton(0) && !Input.GetMouseButton(1)){
reload.Play("pistolamueve");
municion = 0;
Invoke ("recargando",2);
    AudioSource.PlayClipAtPoint(recarga, transform.position, 1);
 
}

   if(Input.GetButton("Fire1")){

destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
destello.active = false;
}   
if (municion <= 0){
if(Input.GetButton("Fire1")){
expulsabalas.SetActive(false);
AudioSource.PlayClipAtPoint(vacio, transform.position, 1);
destello.active = false;
}   
}
}
void recargando (){


expulsabalas.SetActive(true);
if(municiontotal > 0){
municiontotal -= municionderecargo;
municion += municionderecargo;

[/quote]Supongo que la cosa rara de que comentas es una larga tira de clones de balas, esto mientras mantienes presionando el boton Fire1, esa cantidad de balas depende de las veces que se lee el update mientras esta presionado el Fire1(una bala por frame). Solo cambia GetButton por GetButtonDown.

Bye Bye



Gracias a los 2 y sin perdones hermano  

Etiquetas: