Memanggil ActivateActionSetLayer tidaklah mahal dan dapat dilakukan berulang kali dengan aman (tapi, lihat penjelasan di bawah)Hati-hati dengan banyak layer!
Hanya karena kamu bisa menerapkan kembali layer set tindakan pada setiap frame, bukan berarti kamu perlu melakukannya, terutama jika kamu menggunakan lebih dari satu layer. Layer terakhir yang diterapkan akan menimpa informasi yang saling bertentangan yang muncul sebelumnya. Jadi, pastikan untuk menerapkan layer dalam urutan yang benar. Kondisi balapan dan bug waktu kecil lainnya yang menyebabkan penyusunan ulang dapat dengan mudah terjadi pada kodemu.
Layer set tindakan dimaksudkan untuk penggunaan sempit dan direkomendasikan untuk diterapkan dan dihapus hanya untuk perubahan status game tertentu.
Untuk game dengan dukungan Steam Input bawaan, pengembang dapat menetapkan layer set tindakan spesifik yang diaktifkan oleh kode game. Selain itu, dalam mode klasik, pemain dapat menetapkan layer set tindakannya sendiri beserta input yang memicunya, sama seperti mereka dapat menetapkan set tindakan yang dapat mereka picu sendiri.Contoh praktis
Bayangkan game penembak berbasis kelas dengan fitur kendaraan. Game ini memiliki dukungan Steam Input bawaan dan memanfaatkan layer set tindakan. Untuk gameplay dasar, set tindakan dasar selalu aktif dan mencakup tindakan-tindakan seperti lari, mengambil item, lompat, dll.
Ketika pemain memilih kelas, layer yang sesuai kemudian ditambahkan, mis. "sniper"
Kode untuk ini mungkin terlihat seperti:
void changeClass(EClassID myClass)
{
if(myClass == SNIPER)
{
SteamInput()->ActivateActionSetLayer( controllerHandle1, sniperLayerHandle );
}
//logika untuk kelas lainnya
}
Jika pemain masuk atau keluar dari kendaraan, kontrol untuk layer kendaraan akan aktif/nonaktif berdasarkan perubahan status tersebut, yang menambahkan atau menghapus kontrol baru untuk fungsi khusus kendaraan.
void changeVehicle(EVehicleID myVehicle, bool entering)
{
InputActionSetHandle_t layerHandle;
if(myVehicle == AUTOMATIC)
{
layerHandle = automaticHandle; //transmisi otomatis -- setir, gas, rem
}
else if(myVehicle == STICK_SHIFT)
{
layerHandle = stickShiftHandle; //transmisi manual -- setir, gas, rem, kopling, perpindahan gigi, dll.
}
if(entering)
{
SteamInput()>ActivateActionSetLayer( controllerHandle1, layerHandle ); //menerapkan layer set tindakan kendaraan ketika kamu masuk ke dalam kendaraan
}
else
{
SteamInput()>DeactivateActionSetLayer( controllerHandle1, layerHandle ); //menghapus layer set tindakan kendaraan ketika kamu keluar dari kendaraan
}
}
Dalam game ini, pemain dapat menggunakan senjata mereka sambil berkendara. Jadi, ketika sniper menggunakan teleskop di rifle, ini akan mengaktifkan layer set tindakan ketiga, terlepas dari apakah pemain sedang berdiri atau berkendara.
void useScope(bool entering)
{
if(entering)
{
SteamInput()->ActivateActionSetLayer( controllerHandle1, scopeHandle ); //menerapkan layer teleskop ketika menggunakan teleskop
}
else
{
SteamInput()->DeactivateActionSetLayer( controllerHandle1, scopeHandle ); //menghapus layer teleskop ketika berhenti menggunakan teleskop
}
}
Beginilah cara semua lapisan digabungkan.
Perhatikan bahwa selain menerapkan tindakan baru ke layer yang mendasarinya, layer juga dapat menimpa pengikatan yang sudah ada sebelumnya. Dalam hal ini, tindakan khusus untuk kendaraan seperti "rem" dan "gas" dapat menimpa tindakan dasar seperti "lompat" dan "interaksi". Kemudian, "setir" dapat menimpa tindakan "gerak" yang terikat pada trackpad dan joystick di layer dasar, dan ini pada gilirannya ditimpa oleh tindakan "bidik" dari layer set tindakan untuk penggunaan teleskop. Setelah ketiga layer set tindakan ditumpuk di atas, satu-satunya tindakan yang tersisa dari set dasar adalah "tembak".Mode Klasik
Kamu dapat membuat layer set tindakan hampir persis seperti set tindakan biasa. Cukup klik tombol "Tambahkan Layer Tindakan" di konfigurator:
Dari sini, kamu dapat menamai layer set tindakanmu dan menetapkan pengikatannya. Karena ini adalah layer set tindakan klasik, maka game tidak mengetahuinya dan pemain harus mengaktifkannya sendiri. Tentukan input yang akan memicu layer set tindakan, kemudian buka menu pengikatan, dan klik ikon pengaktifan set tindakan, yang merupakan ikon khusus di paling kiri:
Ini akan memunculkan menu pengaktifan set tindakan:
Di sini, kita akan menerapkan layer, bukan mengaktifkan set tindakan. Pilih "Terapkan Layer Tindakan" dari menu drop down:
Terakhir, pilih layer yang ingin kita terapkan:
Kita dapat menggunakan prosedur yang sama untuk menetapkan pengikatan terpisah untuk menghapus layer-nya.