特定時間をかけて0から1まで変化するものをつくりアニメーションを作成する。
--
bool UpdateTransition(GameTime gameTime, TimeSpan time, int direction) { float transitionDelta; if(time == TimeSpan.Zero) { transitionDelta = 1; } else { transitionDelta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds / time.TotalMilliseconds); } transitionPosition += transitionDelta * direction; if((transitionPosition <= 0) || (transitionPosition >= 1)) { transitionPosition = MathHelper.Clamp(transitionPosition, 0, 1); return false; } return true; }これによって計算されたプロパティTransitionPositionを表示位置に適用する。
ScreenStateにTransitionOn(表示が現れる)とTransitionOff(表示が消えゆく)が追加された。GameScreenの最初の状態はTransitionOnで指定された長さのアニメーションが終わったら(上の関数がfalseを返したら)状態が変化する。
ScreenManager内のUpdateでScreenStateの状態を確認して、重ねて画面を表示させるかどうか確認する。
また、文字の透明度をTransitionPositionを利用して変化させる。
最初に追加したMainMenuScreenのオブジェクトはずっと残っているので注意。
ここまでのプロジェクト(135KB)
0 コメント :: GameScreenのUpdate
コメントを投稿