Noticias

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

sonido de pisadas

Iniciado por jtorp20, Julio 17, 2017, 03:14:53 PM

Tema anterior - Siguiente tema
Julio 17, 2017, 03:14:53 PM Ultima modificación: Julio 17, 2017, 11:47:46 PM por jtorp20
Hola a todos.
 
Tengo una pega con el sonido de pisadas en mi personaje. El sonido de pisadas  entra cuando el personaje se mueve, y se para cuando el personaje se detiene, el problema es que suena un zumbido en lugar del sonido del clip. El defecto se da con clips distintos, con cascos en el pc y con sonido de altavoz. Creo que es problema del script.
 
¿A alguien le ha pasado algo similar? 
 
Pongo el Script señalando las partes de audio 
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class SidneyControlMio : MonoBehaviour {
    Animator anim;
    public float speed= 5f;
    public float speedRot= 100f;
    public Slider vida;
    public AudioSource correr;
 
    void Start () {
        anim = GetComponent<Animator>();
    }
    void OnTriggerEnter(Collider other)
    {
        if(other.gameObject.tag== "armaEnemigo")
        {
            vida.value -= 15;
        }
    }
    
    void Update () {
        float translation = Input.GetAxis ("Vertical") * speed;
        float rotation = Input.GetAxis ("Horizontal") * speedRot;
        translation*= Time.deltaTime;
        rotation*= Time.deltaTime;
        transform.Translate(,,translation);
        transform.Rotate(, rotation,);
        if (vida.value <= )
        {
            anim.SetBool ("isDeath", true);
            anim.SetBool ("isIdle", false);
            anim.SetBool ("isRunning", false);
            anim.SetBool ("isAttacking", false);
            correr.Stop ();
            return;
        }  
         else
         {
            if (Input.GetButtonDown ("Fire1")) {
                anim.SetTrigger ("isAttacking");
                correr.Stop (); 
            }
            if (translation != ) {
                anim.SetBool ("isRunning", true);
                anim.SetBool ("isIdle", false);
                correr.Play();
            } else {
                anim.SetBool ("isRunning", false);
                anim.SetBool ("isIdle", true);
                correr.Stop ();
            }
         }
            
 
    }
}

 
 
 
Por cierto, el resto del script a mi me funciona bien para control del personaje principal, por si a alguien le es de utilidad.
 
Incluye el movimiento del personaje con entrada de animaciones, detección de colisión con el arma del enemigo y barra de vida.
 
Gracias.
 
 
 
 

Julio 17, 2017, 04:46:42 PM #1 Ultima modificación: Julio 17, 2017, 04:49:05 PM por lightbug
Cita de: Jose Angel date=1500297293Por cierto, el resto del script a mi me funciona bien para control del personaje principal, por si a alguien le es de utilidad.
   
   
      Incluye el movimiento del personaje con entrada de animaciones, detección de colisión con el arma del enemigo y barra de vida.
   


uff para atras satanas!! te recomiendo que separes bien todo, el control != sonido != barra de vida , separa lo que puedas los scripts. Ahora no lo ves pero si empezas a mejorar el tema de los pasos vas a necesitar separarlos.
 
fijate aca:
 

if (translation != ) {
                anim.SetBool ("isRunning", true);
                anim.SetBool ("isIdle", false);
                correr.Play();:4_joy:
            }

 
estas dando play 60 veces por segundo (idealmente), siempre verifica antes que no se este reproduciendo --> "isPlaying". Igual este metodo es dependiente dela longitud del clip por lo que no me agrada demasiado.
 
yo utilizo el siguiente esquema:
 


  •    detecto una cierta velocidad mayor a tanto


  •    empieza un contador


  •    cuandosupera X segundos llamo a la funcion Footstep() (ponele)


  •    en Footstep elijo el clip basandome en la superficie que piso (spherecast) (los clips son 4 por superficie y estan en una lista en un Scriptableobject)


  •    una vez elegido el clip le aplico aleatoriedad (volumen, pitch, paneo (pie izq vs der),etc)


  •    doy Play


  •    reseteo todo


 
 
saludos

Julio 17, 2017, 05:56:42 PM #2 Ultima modificación: Enero 01, 1970, 01:00:00 AM por jtorp20
muchísimas gracias por tu respuesta. 

Etiquetas: