Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Agosto 03, 2015, 03:07:36 PM

Título: Doble Disparo
Publicado por: ramunda en Agosto 03, 2015, 03:07:36 PM
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;
}
}
}
  
Título: Doble Disparo
Publicado por: ProgramacionWH en Agosto 05, 2015, 08:14:47 PM
Yo normalmente clono GameObjects,sustituye Bala para que sea un GameObject, y clonas la bala entera, no deberias tener ningun problema
Título: Doble Disparo
Publicado por: ramunda en Agosto 06, 2015, 08:31:53 AM
[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? Título: Doble Disparo
Publicado por: ProgramacionWH en Agosto 31, 2015, 07:12:19 PM
@ramunda Lo siento ramunda e estado fuera varias semanadas/dias,si a eso me referia
Título: Doble Disparo
Publicado por: Oak Human Flesh en Agosto 31, 2015, 09:27:33 PM
[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.
Título: Doble Disparo
Publicado por: ramunda en Septiembre 01, 2015, 09:20:53 AM
Gracias a los 2 y sin perdones hermano