特定時間をかけて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
コメントを投稿