スクロール
2055 ワード
現在のゲームでは、プレイヤーが移動すると、背景のガンジーが見えるまでスクロールが増加し続けます.
ここでは、タイルが敷かれていないマップの外でスクロールが移動しないように、スクロールマネージャにスクロール関数を追加します.
スクロール
void CScroll_Manager::Scroll_Lock()
{
if (0 < m_iScrollX)
m_iScrollX = 0;
if (0 < m_iScrollY)
m_iScrollY = 0;
if (WINCX - TILECX * TILEX > m_iScrollX)
m_iScrollX = WINCX - TILECX * TILEX;
if (WINCY - TILECY * TILEY > m_iScrollY)
m_iScrollY = WINCY - TILECY * TILEY;
// x축 조건은 0과 -480 ;
// y축은 0보다 크면서 - 1320
}
スクロールマネージャでスクロール関数を宣言します.まず、現在のゲームでは、左上隅座標が(0,0)のため、スクロール値が0より大きい場合は0に設定します.次はX軸の右Y軸で下に隠します.ここでは現在の値を整数値とすることができますが、そうであればゲーム中のマップサイズが変更された場合、その値を変更することもできます.
したがって、スクロール値の最大値を求めると、X軸上でタイルのXサイズ*にタイルのX個数を乗じて最小値を減算することができ、スクロール値がこの値より小さい場合は初期化すればよい.Y軸もそうです.
CKey_Manager::Get_Instance()->Key_Update();
CScene_Manager::Get_Instance()->Update_Scene_Manager();
CScroll_Manager::Scroll_Lock();
次の値は、MainAppがすべての更新を返した後にスクロールをブロックするために必要な値です.プレイヤースクロールの同期
ただし、プレイヤーが移動中に移動できなくても、スクロールは移動します.これを防ぐためには、移動キーを押したときに無条件に移動するのではなく、値を同期させる必要があります.
まず,プレーヤの更新部では,移動キーの入力時に設定したすべての部分を削除する.
スクロールマウス機能の追加
void CPlayer::ScrollMove()
{
int iScrollX = CScroll_Manager::Get_ScrollX();
int iScrollY = CScroll_Manager::Get_ScrollY();
if ((WINCX >> 1) < m_tInfo.fX + iScrollX + 100)
CScroll_Manager::Set_ScrollX(-m_fSpeed);
if ((WINCX >> 1) > m_tInfo.fX + iScrollX - 100)
CScroll_Manager::Set_ScrollX(m_fSpeed);
if ((WINCY >> 1) < m_tInfo.fY + iScrollY + 100)
CScroll_Manager::Set_ScrollY(-m_fSpeed);
if ((WINCY >> 1) > m_tInfo.fY + iScrollY - 100)
CScroll_Manager::Set_ScrollY(m_fSpeed);
}
スクロールマウスサスペンション関数は、現在のマップの中点値を調整し、プレイヤー座標にスクロール値を追加することによってスクロール値を調整します.これにより、ゲームとスクロールを無条件に移動するのではなく、プレイヤーが中点から一定範囲(ここでは100)を超えてからスクロール値を変更します.Reference
この問題について(スクロール), 我々は、より多くの情報をここで見つけました https://velog.io/@jacod2/스크롤락テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol