1. sayfa
Yürüme vektörünün magnitude ile bence yapabilirsin, mesela if magnitude > 0: play.sound else: dontplay.sound |
GetKey değil GetKeyDown dene |
Denemeye gerek bile yok kardeşim Getkeydown da tuşa basıldığında 1 kez çalıştırıyor. yani bunu kullanırsam düzgün bir yürüme elde edemem. |
böyle denedim ama olmadı magnitude ne için kullanılıyor ve yazdığın dil hangisi ben sadece C# biliyorum. |
1.YÖNTEM: if (!GetComponent<AudioSource>().isPlaying && Input.GetKeyDown(KeyCode.A)) { GetComponent<AudioSource>().PlayOneShot(sesler[1]); } if (GetComponent<AudioSource>().isPlaying && Input.GetKeyUp(KeyCode.A)) { GetComponent<AudioSource>().Stop(); } 2.YÖNTEM: if (!GetComponent<AudioSource>().isPlaying && Input.GetKey(KeyCode.A)) { GetComponent<AudioSource>().PlayOneShot(sesler[1]); } else if(GetComponent<AudioSource>().isPlaying && !Input.GetKey(KeyCode.A)) { GetComponent<AudioSource>().Stop(); } |
Kardeşim ikisinide denedim ama hala devam ediyor. Acaba ses dosyasının uzunluğundan kaynaklı bir problem olabilirmi? |
İkiside çalışıyor, ben bizzat denedim. Birden fazla ses oynatıyorsan sorun o olabilir. Birden fazla yapıp yapmadığını kontrol et. |
kodun tamamı bu kardeşim. bir hata almıyorum calışıyor ama ses hala aynı. senin dediğinide denedim bu kodda olmadı? galiba bende bi sıkıntı var yanlış yere yazıyorum. acaba if in içinemi yazmalıyım yoksa dışına mı ? (Bu kodu sadece mantığını anlaman için yazdım kardeşim yoksa orjinali bu değildi forumlarda önerilenleri deniyorum farklı farklı) |
Karakterin hizi ile cozebilirsin. Hiz 0 ise sesi kessin demen yeterli olacaktir. |
Kardeşim farkettimde acemisin galiba, bende ilk başladığımda senin gibi böyle hatalar yapıyordum :D HATALI KOD: if (Input.GetKey(KeyCode.A)) { oyuncu.transform.Translate(new Vector3(-hiz * Time.deltaTime, 0 ,0)); oyuncu.transform.localScale = new Vector3(1,1,1); if (audioSource.isPlaying == false && Input.GetKey(KeyCode.A)) { audioSource.PlayOneShot(sesler[1]); sagS = true; } else /// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Neyin else'i bu? sagS false olmaz çünkü A'ya hala basıyorsun bu yüzden 2. if parantezindeki A'ya basıyoru silmelisin. { sagS = false; } if (sagS==false) { audioSource.Stop(); Debug.Log("A"); } } DOĞRU KOD: if (Input.GetKey(KeyCode.A)) // A'ya basınca { oyuncu.transform.Translate(new Vector3(-hiz * Time.deltaTime, 0 ,0)); oyuncu.transform.localScale = new Vector3(1,1,1); if (audioSource.isPlaying == false ) { audioSource.PlayOneShot(sesler[1]); if(sagS != true) { sagS = true; } } } else // A'ya basmayınca { if (sagS != false) { sagS = false; } if(audioSource.isPlaying) { audioSource.Stop(); } Debug.Log("A"); } |
merhabalar bendede ses sorunu var.effect leri calmaya calıstıgımda ugultu sesi gelıyor arkaplanda ruzgar sesi ve dier efektler duyuluyor.audio source olarak 1-fly camera digeride benım audıomamagerde var gozukuyor.Fakat gaia nın ruzgar sesi yagmur vs sesini veren audiosource ve malbers anımatıon nun audiosource ni bulamadım arka pland a atın kısnemesı duyuluyor.onları durdurbılsem calısacak benım efektler sanırım. script using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UnityEngine.UI; using UnityEngine.Audio; using UnityEngine.UIElements; public class Audio_player1 : MonoBehaviour { public GameObject Player; public GameObject Rabbit; public GameObject Dear; public GameObject Bear; public GameObject Boar; public GameObject Wolf; public GameObject Duck; public GameObject Ibex; public GameObject Orc_Ursag; public AudioSource AudioSource; [SerializeField] private AudioClip firstAudioClip; [SerializeField] private AudioClip secondAudioClip; [SerializeField] private AudioClip thirdAudioClip; [SerializeField] private AudioClip forthAudioClip; [SerializeField] private AudioClip fifthAudioClip; [SerializeField] private AudioClip sixthAudioClip; [SerializeField] private AudioClip seventhAudioClip; [SerializeField] private AudioClip eighthAudioClip; [SerializeField] private AudioClip ninethAudioClip; [SerializeField] private AudioClip tenthAudioClip; [SerializeField] private AudioClip eleventhAudioClip; [SerializeField] private AudioClip twelwethAudioClip; [SerializeField] private AudioClip thireenthAudioClip; [SerializeField] public AudioSource audioSource; [SerializeField] AudioListener audioListener; public AudioClip[] clips; [SerializeField] public AudioSource FlyCam; void Start() { //audioSource = this.GetComponent<AudioSource>(); //GetComponent<AudioSource>().Stop(); GetComponent<AudioSource>(); audioSource.volume = 0.45f; AudioSource.loop = true; } void Update() { if (AttackRange1.audi == 1) { FlyCam.Stop(); audioSource = GetComponent<AudioSource>(); audioSource.clip = firstAudioClip; audioSource.Play(); } if (AttackRange1.audi == 2) { audioSource = GetComponent<AudioSource>(); audioSource.clip = secondAudioClip; } if (Attack_dear.dr == 1) { audioSource = GetComponent<AudioSource>(); audioSource.clip = thirdAudioClip; } if (Attack_dear.dr == 2) { audioSource = GetComponent<AudioSource>(); audioSource.clip = forthAudioClip; } if (Attack_boar.br == 1) { audioSource = GetComponent<AudioSource>(); audioSource.clip = fifthAudioClip; } if (Attack_boar.br == 2) { audioSource = GetComponent<AudioSource>(); audioSource.clip = sixthAudioClip; } if (Attack_wolf.vlf == 1) { audioSource = GetComponent<AudioSource>(); audioSource.clip = seventhAudioClip; } if (Attack_wolf.vlf == 2) { audioSource = GetComponent<AudioSource>(); audioSource.clip = eighthAudioClip; } if (Rabbit_attack.rbt == 1) { audioSource = GetComponent<AudioSource>(); audioSource.clip = ninethAudioClip; } if (Attack_duck.dck == 1) { //AudioSource.clip = tenthAudioClip; //audioSource.Play(); audioSource = GetComponent<AudioSource>(); audioSource.clip = tenthAudioClip; } if (Attack_duck.dck == 2) { audioSource = GetComponent<AudioSource>(); audioSource.clip = eleventhAudioClip; } if (Atack_Orc.dr == 1) { audioSource = GetComponent<AudioSource>(); audioSource.clip = twelwethAudioClip; } if (Atack_Orc.dr == 2) { audioSource = GetComponent<AudioSource>(); audioSource.clip = thireenthAudioClip; } audioSource = GetComponent<AudioSource>(); audioSource.Play(); //audioSource.PlayOneShot(audioSource.clip); //audioSource.PlayOneShot(audioSource.clip, Vector3.one); if (audioSource.isPlaying) { Debug.Log("Audio is playing"); } //if (((Player.activeInHierarchy) && (Healt_player1.pq == 0)) || ((Bear.activeInHierarchy) && (AttackRange1.ar == 0)) || ((Dear.activeInHierarchy) && (Attack_dear.ar == 0)) || ((Boar.activeInHierarchy) && (Attack_boar.ar == 0)) //|| ((Wolf.activeInHierarchy) && (Attack_wolf.ar == 0)) || ((Rabbit.activeInHierarchy) && (Rabbit_attack.ar == 0)) || ((Ibex.activeInHierarchy) && (Ibex_attack.ar == 0)) || ((Duck.activeInHierarchy) && (Attack_duck.ar == 0)) || ((Orc_Ursag.activeInHierarchy) && (Atack_Orc.ar == 0))) //{ //audioSource.Stop(); //audioSource.enabled = false; //} } } play edildiginde Debug.Log("Audio is playing");i goruyorum,audio source de clıp degisiyor,volume calısıyor,loop tıkl ıoluyor gelgelelim ugultu ve arkaplan seslerını duyuyorum sadece playı sonlandırırken play e bastıgımda effeckt gelıyor.cıkamadım ıcınden.yardım lutfen. tsklr sımdıden slmr |
tekrar merhabascript i revize ettim.Fakat degişen birsey olmadı.İsin garibi inpector penceresinde AudioSource nun logaritmicRollof una tıkladıgımda gayet guzel calısıyor.anlayamadım.Birde void Start() ı void Aweke() olarak degiştirip deneyecegim.Yardımlarınıza sımdıden tesekkurler. slmr using UnityEngine; public class Audio_player1 : MonoBehaviour { public GameObject Player; public GameObject Rabbit; public GameObject Dear; public GameObject Bear; public GameObject Boar; public GameObject Wolf; public GameObject Duck; public GameObject Ibex; public GameObject Orc_Ursag; [SerializeField] public AudioSource AudioSource; [SerializeField] private AudioClip firstAudioClip; [SerializeField] private AudioClip secondAudioClip; [SerializeField] private AudioClip thirdAudioClip; [SerializeField] private AudioClip forthAudioClip; [SerializeField] private AudioClip fifthAudioClip; [SerializeField] private AudioClip sixthAudioClip; [SerializeField] private AudioClip seventhAudioClip; [SerializeField] private AudioClip eighthAudioClip; [SerializeField] private AudioClip ninethAudioClip; [SerializeField] private AudioClip tenthAudioClip; [SerializeField] private AudioClip eleventhAudioClip; [SerializeField] private AudioClip twelwethAudioClip; [SerializeField] private AudioClip thireenthAudioClip; void Start() { //audioSource = this.GetComponent<AudioSource>(); //GetComponent<AudioSource>().Stop(); //GetComponent<AudioSource>(); //audioSource.volume = 0.45f; //AudioSource.loop = true; } void Update() { if (AttackRange1.audi == 1) { AudioSource.clip = firstAudioClip; } if (AttackRange1.audi == 2) { AudioSource.clip = secondAudioClip; } if (Attack_dear.dr == 1) { AudioSource.clip = thirdAudioClip; } if (Attack_dear.dr == 2) { AudioSource.clip = forthAudioClip; } if (Attack_boar.br == 1) { AudioSource.clip = fifthAudioClip; } if (Attack_boar.br == 2) { AudioSource.clip = sixthAudioClip; } if (Attack_wolf.vlf == 1) { AudioSource.clip = seventhAudioClip; } if (Attack_wolf.vlf == 2) { AudioSource.clip = eighthAudioClip; } if (Rabbit_attack.rbt == 1) { AudioSource.clip = ninethAudioClip; } if (Attack_duck.dck == 1) { AudioSource.clip = tenthAudioClip; } if (Attack_duck.dck == 2) { //audioSource = GetComponent<AudioSource>(); AudioSource.clip = eleventhAudioClip; } if (Atack_Orc.dr == 1) { //audioSource = GetComponent<AudioSource>(); AudioSource.clip = twelwethAudioClip; } if (Atack_Orc.dr == 2) { //audioSource = GetComponent<AudioSource>(); AudioSource.clip = thireenthAudioClip; } GetComponent<AudioSource>(); AudioSource.volume = 0.45f; AudioSource.loop = true; AudioSource.Play(); //AudioSource.PlayOneShot(audioSource.clip); // if (AudioSource.isPlaying) { Debug.Log("Audio is playing"); } // oyuncular oldugunde efect kesıliyor sorungıderilenekadar bu bolumu ıptal ettım //if (((Player.activeInHierarchy) && (Healt_player1.pq == 0)) || ((Bear.activeInHierarchy) && (AttackRange1.ar == 0)) || ((Dear.activeInHierarchy) && (Attack_dear.ar == 0)) || ((Boar.activeInHierarchy) && (Attack_boar.ar == 0)) //|| ((Wolf.activeInHierarchy) && (Attack_wolf.ar == 0)) || ((Rabbit.activeInHierarchy) && (Rabbit_attack.ar == 0)) || ((Ibex.activeInHierarchy) && (Ibex_attack.ar == 0)) || ((Duck.activeInHierarchy) && (Attack_duck.ar == 0)) || ((Orc_Ursag.activeInHierarchy) && (Atack_Orc.ar == 0))) //{ //audioSource.Stop(); //audioSource.enabled = false; //} } } |
1. sayfa
void Update()
if (!GetComponent<AudioSource>().isPlaying && Input.GetKey(KeyCode.D))
{
GetComponent<AudioSource>().PlayOneShot(sesler[1]);
}
şu kod ile ses oynatıyorum ama yürümeyi bıraktığım anda da ses devam ediyor. tuşu bıraktığım anda sesi nasıl durdurabilirim? şimdiden cevaplar için teşekkürler :D