Diskuze: rychlost otáčení věže tanku
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= 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.
Udělej si např. alarm, který bude každé dvě sekundy kontrolovat pozici kurzoru.
Máš 2 úhly, A (směr tank -> kurzor) a B (natočení tanku). Když bude
rozdíl A-B kladný tak budeš postupně natáčet doleva, jinak doprava.
Musíš ošetřit stavy, kdy je třeba jeden úhel 5 a druhý 355.
Tady je výraz, který ti vrátí úhel v intervalu <-180;180), takže se v
podstatě nemusíš o nic starat.
((((A - B) mod 360) + 540) mod 360) - 180
Je to starý kód, který jsem psal. Možná by šel zjednodušit.
https://dl.dropboxusercontent.com/…rotation.gmk (už nejde edit předchozího příspěvku, divný to systém )
To je tím, že nemáš ve Scripts nahranej script smooth_rotation.
Jinak to s tím alarmem by se dalo vyřešit třeba takto...
Do Create:
alarm[0] = room_speed * 2;
Do: Alarm 0:
dir = point_direction(x, y, mouse_x, mouse_y);
direction = dir
image_angle = dir;
alarm[0] = room_speed * 2;
Myslím, že image_angle ve stepu je jen v pro verzi.
Uvědomuješ si, cos napsal? Rychlost otáčení by byla 0,5 (půl) "FPS" (kvůli alarm[0] = room_speed * 2), takže otáčení by nebylo plynulé (alarm se pustí jednou za 2 vteřiny).
To měl být jen příklad na ten alarm Na ostatní faktory jsem se
nezaměřoval. Pro ukázku snad stačí ne?
Teď mi došlo, že on to asi s tím alarmem myslel trošku jinak
To by se dalo vyřešit postupným přičítáním úhlu dokud by úhel nebyl
roven úhlu myši.
Zobrazeno 12 zpráv z 12.