Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: ramunda en Junio 13, 2015, 05:36:31 PM

Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 13, 2015, 05:36:31 PM
Hola muy buenas , tengo un quebradero de cabeza con este script, que funcionar funciona de maravilla, dispara , recarga, deja de disparar si no tiene balas....pero....me gustaria que cuando tiene balas y esta disparando reproduciera el sonido de metralleta por ej, que cuendo no tuviera balas(esperando el "R" de recarga que sonara a por ej cargador vacio, y al recargar un sonido de recarga osea cuando aprieto la R....
 
Seguro que es una tonteria pero me esta llevando de pura cabeza!! , un dato estoy con Unity5 lo digo porque es parte de mi problema que los Guetcomponet.Audio nose que han cambiado todo y me llevan loco.
 
Una ayudita por favor?, tengo la Var de recarga con uadiclip y la de gunshot...pero ....
 
aqui el script: "JS"

var Bala : Rigidbody;
var Velocidad = 20;
var municion : int = 60;
var municiontotal = 300;
var guimuni : GUIText;
var guitotal : GUIText;
var destello : GameObject;
var manoanim : GameObject;
var municionanim : GameObject;
var recarga : AudioClip;
var gunShot : AudioSource;
function Start(){
destello.active = false;
}
function Update(){
guimuni.text = municion.ToString();
guitotal.text = municiontotal.ToString();
 
if(Input.GetMouseButton(0)){

    if (municion > 0 && municiontotal >= 0){
     
        var clona = Instantiate(Bala, transform.position, transform.rotation);
   clona.velocity = transform.TransformDirection(Vector3(0, 0, Velocidad));
         municion -= 1;
         Destroy (clona.gameObject, 1);
}
}
if(Input.GetKeyDown("r") && municiontotal > 0){
    //manoanim.Animation.Play();
    //municionanim.Animation.Play();
    municion = 0;
    Invoke ("recargando",2);
    
}
if(Input.GetMouseButtonDown(0)){
destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
destello.active = false;
}   
if (municion <= 0){
destello.active = false;

}
}
function recargando (){
if(municiontotal > 0){
   
municiontotal -= 100;
municion +=100;
}
if (municion >100){
municion = 100;
}
}
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: juanma_teso en Junio 14, 2015, 02:20:28 AM
Si tienes animaciones, puedes poner eventos, así lo hice yo. Vete a la ventana anim y en el frame que creas que puede quedar bien el sonido creas un evento, se crea dándole a una pestañita cercana al contador de frames. Con el evento puedes disparar métodos, yo creé un script con diferentes sonidos y los reproducía mediante eventos (pasos, balas, herida).
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: juanma_teso en Junio 14, 2015, 02:22:38 AM
Además te aconsejaría que el tema de munición revises más los valores, si tienes en munición total 60 y recargas la munición total te quedará en -40 y eso no estaría bien
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: DavidV en Junio 14, 2015, 03:11:34 AM
Crea 3 Empty y añadele a cada uno un audio (Uno que contenga el de disparo, otro el recarga e.t.c) al añadirselo en el inspector donde dice Audio Source desactiva el "Play on Awake" 

public AudioSource Disparo;  
 public AudioSource Recargando;
 public AudioSource Sincarga;
if( precciono tecla de disparo)
Disparo.Play()
 
if(precciono tecla recargar)
Recargando.Play()
if (bala == 0)
Sincarga.Play()

En el inspector a cada variable añadele el Empty correspondiente. 
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: en Junio 14, 2015, 10:35:54 AM
Puedes utilizar los eventos en animaciones como dice @juanma_teso. Si no tienes animaciones utiliza simplemente esto :
 
http://docs.unity3d.com/ScriptReference/AudioSource.PlayOneShot.html
 
El sistema de los GameObjects cuando tienes muchos puede ser un lio y no se hasta que punto es eficiente o no.
 
Además si no tienes que simular la bala te recomendaría que mirases los Raycast, son mas eficientes y dan menos errores. 
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 14, 2015, 11:43:03 AM
Cita de: juanma_teso date=1434241228Si tienes animaciones, puedes poner eventos, así lo hice yo. Vete a la ventana anim y en el frame que creas que puede quedar bien el sonido creas un evento, se crea dándole a una pestañita cercana al contador de frames. Con el evento puedes disparar métodos, yo creé un script con diferentes sonidos y los reproducía mediante eventos (pasos, balas, herida).
Muchas gracias por responder Juanma_teso, lo estudiare aver que puedo hacer con animaciones y gracias por el detalle de los contadores de balas lo revisare.
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 14, 2015, 11:49:48 AM
Cita de: DavidV date=1434244294Crea 3 Empty y añadele a cada uno un audio (Uno que contenga el de disparo, otro el recarga e.t.c) al añadirselo en el inspector donde dice Audio Source desactiva el "Play on Awake" 

public AudioSource Disparo;  
 public AudioSource Recargando;
 public AudioSource Sincarga;
if( precciono tecla de disparo)
Disparo.Play()
 
if(precciono tecla recargar)
Recargando.Play()
if (bala == 0)
Sincarga.Play()

En el inspector a cada variable añadele el Empty correspondiente. 
Que buena ideaaaaa si señor voy a probarlo ahora mismo y os cuento   ))) muchas gracias DavidV.Pero una cosa los empty los añado a que? al arma por ejemplo??
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 14, 2015, 11:53:17 AM
Cita de: Samusan date=1434270954Puedes utilizar los eventos en animaciones como dice @juanma_teso. Si no tienes animaciones utiliza simplemente esto :
 
http://docs.unity3d.com/ScriptReference/AudioSource.PlayOneShot.html
 
El sistema de los GameObjects cuando tienes muchos puede ser un lio y no se hasta que punto es eficiente o no.
 
Además si no tienes que simular la bala te recomendaría que mirases los Raycast, son mas eficientes y dan menos errores. 
Samusan, muy interesante también y si te doy toda la razón del mundo en lo de los Raycasts, pero....lo he intentado varias veces y lo único que consigo es que dispare pero no he conseguido lo de recargar , tu entiendes de raycasts y eso podrías convertirme el script que tengo arriba en raycast?, te estaría muy agradecido!!!
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 14, 2015, 01:44:03 PM
Cita de: DavidV date=1434244294Crea 3 Empty y añadele a cada uno un audio (Uno que contenga el de disparo, otro el recarga e.t.c) al añadirselo en el inspector donde dice Audio Source desactiva el "Play on Awake" 

public AudioSource Disparo;  
 public AudioSource Recargando;
 public AudioSource Sincarga;
if( precciono tecla de disparo)
Disparo.Play()
 
if(precciono tecla recargar)
Recargando.Play()
if (bala == 0)
Sincarga.Play()

En el inspector a cada variable añadele el Empty correspondiente. 
Estimado David..la cosa esta semi arreglada añadiendo los 3 vars gunshot, recarga y vacio , cuando dispara suena bien, si recarga suena bien, pero el problemilla esta al quedarse sin balas...suena el de no tener balas pero tambien suena el de disparo normal? donde esta el fallo? te dejo el script corregido aver si me puedes dar luz a esto graciasss


var Bala : Rigidbody;
var Velocidad = 20;
static var municion : int = 100;
var municiontotal = 1000;
var guimuni : GUIText;
public var guitotal : GUIText;
var destello : GameObject;
var manoanim : GameObject;
var municionanim : GameObject;
var gunShot : AudioClip;
var recarga : AudioClip;
var vacio: AudioClip;
//var recarga : AudioClip;
//var gunShot : AudioSource;
 
//public  var Sonidodisparo : AudioClip;  
//public  var Sonidorecarga : AudioClip ; 
//public  var Sonidovacio : AudioClip ;  
 
 
function Start(){
destello.active = false;
}
 
function Update(){
 
guimuni.text = "Municion: " + municion.ToString();
guitotal.text = "Municion Total: " + municiontotal.ToString();
 
 
 
if(Input.GetButton("Fire1")){
AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);
  if (municion > 0 && municiontotal >= 0){
 
   
   var clona = Instantiate(Bala, transform.position, transform.rotation);
clona.velocity = transform.TransformDirection(Vector3(0, 0, Velocidad));
    municion -= 1;
    Destroy (clona.gameObject, 1);
   
}
}
if(Input.GetKeyDown("r") && municiontotal > 0){
    
  municion = 0;
  AudioSource.PlayClipAtPoint(recarga, transform.position, 1);
  Invoke ("recargando",2);
 
}
 
if(Input.GetMouseButtonDown(0)){
destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
destello.active = false;
}
if (municion <= 0){
if(Input.GetButton("Fire1")){
AudioSource.PlayClipAtPoint(vacio, transform.position, 1);}
destello.active = false;
 
}
}
function recargando (){
 
if(municiontotal > 0){
 
municiontotal -= 100;
municion +=100;
 
}
if (municion >100){
municion = 100; 
}
}
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: DavidV en Junio 14, 2015, 08:15:38 PM
Cita de: ramunda date=1434275388 
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: DavidV en Junio 14, 2015, 08:19:22 PM

f(Input.GetButton("Fire1")){
AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);
  if (municion > 0 && municiontotal >= 0){
 
 
  var clona = Instantiate(Bala, transform.position, transform.rotation);
 

Prueba poniendo el "AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);" debajo del 
if (municion > 0 && municiontotal >= 0)
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 14, 2015, 11:05:46 PM
Cita de: DavidV date=1434305962

f(Input.GetButton("Fire1")){
AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);
  if (municion > 0 && municiontotal >= 0){
 
 
  var clona = Instantiate(Bala, transform.position, transform.rotation);
 

Prueba poniendo el "AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);" debajo del 
if (municion > 0 && municiontotal >= 0)
 
Siempre he dicho...ser un Genio no es un titulo es tener cabeza!! y tu tienes las dos cosas , funciona perfectamente tal y como dijiste!!, muchas muchas gracias por la prestura y por la amabilidad y tiempo invertido en mi pobre conocimiento.
 
Me arriesgo a pedirte una cosa mas!!, mi personaje la palma sisisi hahahah,  y esta perdido por el bosque y me gustaria que cuando muriera respawneara en algun lugar de este bosque aleatorio...he probado varias cosas y sin exito...se te ocurre algo?
 
Aquí

if(currentHealth <= 0){
         player.transform.position = new Vector3(6,1,4);
         currentHealth = 100;
      } 

se que hay algo de un ramdom pero no consigo atinarlo
 
 
el fragmento de JS que la palma y las coordenadas que le especifique ya que de momento no tengo otra cosa
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: DavidV en Junio 15, 2015, 01:00:15 AM
Sí es que aparezca en cualquier parte del bosque o área podrías probar con este.

if(currentHealth <= 0){
transform.position = new Vector3(Random.Range(-10.0f, 10.0f), 0, Random.Range(-10.0f, 10.0f));
currentHealth = 100;
   }

El personaje va a aparecer en una posición entre -10.0 y 10.0 en el Eje de las X y las Z.
 
Puede Aumentar el número para que la zona en donde aparezca sea más amplia. 
Título: Poner audio al disparar, al recargar y cargador vacio.
Publicado por: ramunda en Junio 15, 2015, 01:12:15 AM
Cita de: DavidV date=1434322815Sí es que aparezca en cualquier parte del bosque o área podrías probar con este.

if(currentHealth <= 0){
transform.position = new Vector3(Random.Range(-10.0f, 10.0f), 0, Random.Range(-10.0f, 10.0f));
currentHealth = 100;
   }

El personaje va a aparecer en una posición entre -10.0 y 10.0 en el Eje de las X y las Z.
 
Puede Aumentar el número para que la zona en donde aparezca sea más amplia. 
 
Un 10 para ti de nuevo...que envidia me das, sana eso si pero envidia me tire 4 dias con esto del random y solo consegui aspirinas...bien funciona!!, pero hay un handicap xd la isal en si...esta rodeada de agua y ...la mayoria de veces aparece en el agua...y claro...se jodio XD pregunto sirve de algo que te diga las dimensiones de el terrain? alli todo es suelo se podrian mas o menos calcular desde eso?? entiendo lo de el 10.0 y menos 10 eso lo veo claro pero estaria guay que apareciera en cualquier parte de todo el terrain...el terrain tiene 2000 x 2000 no se si sirve para nada.Pero GRACIAS  de antemano de verdad! el mundo necesita gente como tu amigo!!