Saya memprogram Mesin Musik kecil untuk permainan saya di C # dan XNA, dan satu aspek darinya adalah kemungkinan untuk mengulang bagian dari sebuah lagu. Sebagai contoh, lagu saya memiliki intropart, dan ketika lagu mencapai akhir (atau titik spesifik lainnya), ia melompat kembali ke tempat intropart baru saja berakhir. (A - B - B - B ...)
Sekarang saya menggunakan IrrKlank, yang berfungsi dengan baik, tanpa celah, tapi saya punya masalah:
Titik untuk melompat kembali sedikit tidak akurat. Berikut beberapa contoh kode:
public bool Passed(float time)
{
if ( PlayPosition >= time )
return true;
return false;
}
//somewhere else
if( song.Passed( 10.0f ) )
song.JumpTo( 5.0f );
Sekarang masalahnya adalah, lagunya melewati 10 detik, tetapi mainkan beberapa milidetik hingga 10.1f atau lebih, dan kemudian lompat ke 5 detik. Ini tidak sedramatis itu, tetapi sangat salah untuk kebutuhan saya. Saya mencoba memperbaikinya seperti itu:
public bool Passed( float time )
{
if( PlayPosition + 3 * dt >= time && PlayPosition <= time )
return true;
return false;
}
(dt adalah waktu delta, waktu yang berlalu sejak frame terakhir)
Tapi saya tidak berpikir, itu solusi yang bagus untuk itu.
Saya harap, Anda dapat memahami masalah saya (dan bahasa Inggris saya, yay / o /) dan membantu saya :)