Saya telah mencoba membuat karakter saya menembakkan proyektil pada bingkai animasi tertentu. Namun, terkadang berhasil dan terkadang mengabaikan pembuatan proyektil.

Saya sudah mencoba menggunakan alarm alih-alih memeriksa indeks gambar tetapi saya tidak bisa mendapatkan pengatur waktu yang cukup rendah untuk mendapatkan waktu yang tepat.

Saya pikir mungkin ada masalah dengan kecepatan gambar menjadi 0,2, bukan 1.

Saya menggunakan mesin status untuk membuatnya beralih antara bergerak dan menembak, tetapi saya memeriksa dan itu bukan masalah dengan peralihan status karena berubah ketika saya menginginkannya.

Berikut adalah kode yang relevan dari status pemotretan:

if image_index == 2 {
   instance_create(x+20*image_xscale,y,obj_projectile);
}

Berikut adalah kode yang mengubah tangki ke status menembak dari status utama:

if key_shoot{
   state = states.shoot;
   image_speed = 0.2;
   sprite_index = spr_tankShoot;
}

Ada juga acara akhir animasi di objek dengan kode berikut:

if sprite_index == spr_tankShoot{
   state = states.normal;
}

Jika ada yang bisa melihat sesuatu yang salah dengan kode dan/atau tahu apa yang salah dengan ini, itu akan sangat dihargai.

gml
0
SoaringBobcat 21 September 2019, 07:01

1 menjawab

Jawaban Terbaik

Saya pikir mungkin ada masalah dengan kecepatan gambar menjadi 0,2, bukan 1.

Ini mungkin - jika animasi Anda memiliki kecepatan yang berbeda dan Anda tidak cenderung untuk mereset image_index pada awal animasi, Anda mungkin berakhir dengan indeks awal yang bervariasi (misalkan, 0,1) yang tidak akan jatuh tepat pada 2.0 saat menambahkan 0,2 ke dalamnya. Memeriksa bahwa bingkai adalah angka yang tepat adalah praktik yang tidak sebaik secara umum.

Anda dapat menyimpan image_index di akhir bingkai untuk referensi di masa mendatang,

image_index_previous = image_index;

Dan kemudian periksa apakah image_index melangkahi 2 sejak frame terakhir:

if image_index_previous < 2 && image_index >= 2 {
   instance_create(x+20*image_xscale,y,obj_projectile);
}
0
YellowAfterlife 21 September 2019, 07:51