/// <summary> /// Do the route guage algorithm here. /// </summary> private void DoRouteGuage() { // Cannot do anything with out these two components. if (mRealStartTransform == null || mRealGoalTransfrom == null || mSpriteStartTransform == null || mSpriteGoalTransform == null) { return; } for (int index = 0; index < mPlayersForm.Count; ++index) { // 拿到選手 PlayerRegisterForm prf = mPlayersForm[index]; if (prf.playerTransform == null || prf.spriteTransform == null) { continue; } PutPlayerSpriteInPositionBaseOnRealDistance(prf); // make sure player are in range. PutPlayerSpriteInRange(prf); } }
/// <summary> /// Measure the real world thing, then determine the positon /// of the sprite going to be located. /// </summary> /// <param name="prf"> /// player to set. /// </param> private void PutPlayerSpriteInPositionBaseOnRealDistance(PlayerRegisterForm prf) { float statusBarCenter = mSpriteStartTransform.position.x + (mSpriteDistance / 2); Vector3 newSpritePos = prf.spriteTransform.position; newSpritePos.x = statusBarCenter + (prf.playerTransform.position.x * mDistanceRatio); prf.spriteTransform.position = newSpritePos; }
/// <summary> /// Make sure all the player sprite inside the sprite range. /// </summary> /// <param name="prf"></param> private void PutPlayerSpriteInRange(PlayerRegisterForm prf) { Vector3 playerSpritePos = prf.spriteTransform.position; Vector3 spriteGoalPos = mSpriteGoalTransform.position; Vector3 spriteStartPos = mSpriteStartTransform.position; if (playerSpritePos.x > spriteGoalPos.x) { playerSpritePos.x = spriteGoalPos.x; } else if (playerSpritePos.x < spriteStartPos.x) { playerSpritePos.x = spriteStartPos.x; } prf.spriteTransform.position = playerSpritePos; }