Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: ShakeScreen : faire en sorte que les GUI ne soient pas "secoués" ? Sam 13 Fév 2021 - 20:21 | |
| Hey you guys ! Comment ça va la tasse bleue ?! Je me posais une question... Est-ce que vous pensez qu'il existe un moyen de faire en sorte qu'on puisse utiliser la commande ShakeScreen, sans que ça inclut les GUI ? Parce que du coup, les textes deviennent illisibles, et j'aimerais que le joueur puisse les lire en même temps qu'il y a la secousse.... Ou au moins limiter la secousse à une section de l'écran uniquement, par exemple ? Merci d'avance |
|
Kitai Délégué de la tasse bleue
Nombre de messages : 2907
Date d'inscription : 01/08/2006
| Sujet: Re: ShakeScreen : faire en sorte que les GUI ne soient pas "secoués" ? Sam 13 Fév 2021 - 21:01 | |
| Est-ce que tu as essayé d'afficher ton texte dans des Overlay plutôt que des GUI histoire de voir s'ils sont secoués en même temps ?
Une autre option serait de créer une fonction personnalisée pour reproduire les secousses, sans dépalcer les GUI, par exemple en jouant avec Game.Camera
_________________ Ga is Ga Vous pouvez consulter l' aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit ! |
|
Arlann Cliqueur Amateur
Nombre de messages : 286
Date d'inscription : 06/04/2016
| Sujet: Re: ShakeScreen : faire en sorte que les GUI ne soient pas "secoués" ? Sam 13 Fév 2021 - 21:48 | |
| - Kitai a écrit:
- Une autre option serait de créer une fonction personnalisée pour reproduire les secousses, sans dépalcer les GUI, par exemple en jouant avec Game.Camera
J'ai eu la même idée, voici un petit bout de code qui semble avoir l'effet escompté: - Code:
-
// SHAKE ROOM int shake_origineX, shake_origineY, shake_amplitude, shake_delay; bool shakeRoom;
function ShakeRoom(int _amplitude, int _delay) { shake_origineX = Game.Camera.X; shake_origineY = Game.Camera.Y; shake_delay = _delay; shake_amplitude = _amplitude; shakeRoom = true; }
function late_repeatedly_execute_always(){ if (shakeRoom) { Game.Camera.SetSize(Screen.Width-shake_amplitude, Screen.Height-shake_amplitude); Game.Camera.SetAt( shake_origineX-shake_amplitude+Random(shake_amplitude*2), shake_origineY-shake_amplitude+Random(shake_amplitude*2) ); if ( shake_delay > 0 ) shake_delay--; else { Game.Camera.SetSize(Screen.Width, Screen.Height); Game.Camera.SetAt( shake_origineX, shake_origineY ); Game.Camera.AutoTracking=true; shakeRoom = false; } } } et d'appeler: - Code:
-
ShakeRoom(5, 20); // avec l'amplitude en 1er paramètre et la durée en second. Edit : Si la caméra est en scrolling ce n'est pas très optimisé, il faudrait remplacer les variables de l'origine par la cible du mouvement. |
|
Shai-la Ouvrière en Chef de la Grande Tasse Bleue
Nombre de messages : 6018
Age : 46
Localisation : Montpellier
Date d'inscription : 17/04/2006
| Sujet: Re: ShakeScreen : faire en sorte que les GUI ne soient pas "secoués" ? Dim 14 Fév 2021 - 7:52 | |
| Merci ! C'est à tenter Sinon, plus simplement, j'avais fini par créer un Object avec l'image du background, et je l'ai animé de haut en bas pour reproduire le mouvement de secousse, ça marche aussi Mais le code ou l'overlay sera sûrement plus précis, je vais regarder ça. |
|
Contenu sponsorisé
| Sujet: Re: ShakeScreen : faire en sorte que les GUI ne soient pas "secoués" ? | |
| |
|