Diskuze: Problem s otáčaním.
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Docela podivně splácaný kód. Ty ses dřív učil Pascal,ne?
Chyba je to ovšem docela zajímavá.
Když jsi psal:
keyboard_check_released(vk_up or vk_down) then {speed=0};
tak jsi měl určitě na mysli "když je puštěna klávesa nahoru nebo dolů" a to takhle napsat nemůžeš. Nejprve se totiž provede operace v závorce a to číselně. Kódy kláves vk_up a vk_down jsou 38 a 40. Jakékoli nenulové číslo použité v logických operacích se bere v GM jako 1. Proto tvůj zápis znamená 1 or 1 a výsledek je vždy 1. Jedna je kód pro any_key a tak jsi vlastně napsal if keyboard_check_released(vk_anykey) a tím se ti udělá speed 0 při puštění libovolné klávesy.
Já bych celý kód napsal nějak takhle:
speed=0;
if keyboard_check_direct(vk_up) {speed=10};
if keyboard_check_direct(vk_down) {speed=-10};
if speed!=0
{
if keyboard_check_direct(vk_left) direction+=9;
if keyboard_check_direct(vk_right) direction-=9;
}
image_index=-direction/9;
Ale radši bych použil rychlost 1 místo deset a zvýšil bych místo toho room_speed desetkrát. Výsledek bude stejný, ale FPS ti bude odpovídat pohybu a nebude se cukat obraz.
Zobrazeno 2 zpráv z 2.