GameScreenのUpdate


これまではGameSceenが動的に変化することがなかった。リッチなインターフェースを作るにはアニメーション効果が必要になる。Update()内で表示させる場所などを変化させる。

特定時間をかけて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

コメントを投稿