Şimdi Ara

Unity Ses Oynatma Sorunu.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
12
Cevap
0
Favori
1.075
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Oynumda yürürken tuşa basıldığında;
    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



  • 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

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Kara Börü kullanıcısına yanıt
    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.
  • wozniak kullanıcısına yanıt
     
    if (!GetComponent<AudioSource>().isPlaying && Input.GetKeyDown(KeyCode.A))
    {
    GetComponent<AudioSource>().PlayOneShot(sesler[1]);
    }
    else
    {
    GetComponent<AudioSource>().Stop();
    }


    böyle denedim ama olmadı magnitude ne için kullanılıyor ve yazdığın dil hangisi ben sadece C# biliyorum.
  • egmtncakgn kullanıcısına yanıt
    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();
    }



    < Bu mesaj bu kişi tarafından değiştirildi Progressive288 -- 16 Temmuz 2018; 12:6:10 >
  • Kardeşim ikisinide denedim ama hala devam ediyor. Acaba ses dosyasının uzunluğundan kaynaklı bir problem olabilirmi?
  • egmtncakgn kullanıcısına yanıt
    İkiside çalışıyor, ben bizzat denedim. Birden fazla ses oynatıyorsan sorun o olabilir. Birden fazla yapıp yapmadığını kontrol et.



    < Bu mesaj bu kişi tarafından değiştirildi Progressive288 -- 16 Temmuz 2018; 17:10:57 >

  • using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class OHareket : MonoBehaviour {
    public GameObject oyuncu, gm;
    public int hiz = 5, yhiz = 200;
    public bool yerde, dead, sagS, solS;
    public Rigidbody2D rb;
    public AudioClip[] sesler;
    public AudioSource audioSource;

    // Use this for initialization
    void Start () {

    rb = GetComponent<Rigidbody2D>();
    dead = gm.GetComponent<GameManager>().dead;
    audioSource = GetComponent<AudioSource>();

    }

    // Update is called once per frame
    void Update () {


    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
    {
    sagS = false;
    }
    if (sagS==false)
    {
    audioSource.Stop();
    Debug.Log("A");
    }

    }

    if (Input.GetKey(KeyCode.D))
    {
    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.D))
    {
    audioSource.PlayOneShot(sesler[1]);
    Debug.Log("1D");
    }
    else if (audioSource.isPlaying == true && Input.GetKeyUp(KeyCode.D))
    {
    audioSource.Stop();
    Debug.Log("D");
    }

    }
    if(Input.GetKeyDown(KeyCode.W) && yerde && !dead)
    {
    rb.AddForceAtPosition(new Vector2(0, yhiz), Vector2.up);
    yerde = false;
    audioSource.PlayOneShot(sesler[0]);
    }

    }

    private void OnCollisionEnter2D(Collision2D col)
    {
    if (col.gameObject.tag == "Yer")
    {
    yerde = true;
    }
    }
    }

    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ı)



    < Bu mesaj bu kişi tarafından değiştirildi egmtncakgn -- 16 Temmuz 2018; 17:29:4 >




  • Karakterin hizi ile cozebilirsin.

    Hiz 0 ise sesi kessin demen yeterli olacaktir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • egmtncakgn kullanıcısına yanıt
    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");
    }



    < Bu mesaj bu kişi tarafından değiştirildi Progressive288 -- 17 Temmuz 2018; 13:35:8 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.