视角切换&小地图模糊问题解决

This commit is contained in:
lishuo committed 2021-05-07 18:41:37 +08:00
1 parent 9bc3864790
commit e4d4333357
30 files changed
+3746 -2965

No files matched your search

+65 -32
View File
@@ -71,10 +71,13 @@ public class CyclingController : DeviceServiceMonoBase
resultPanel = transform.Find("SingleUI/Panel/ResultPanel").gameObject;
}
Transform target;
private void Start()
{
UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
target = transform.Find("Target");
//进入倒计时
singleUIManager = UIObject.GetComponent<SingleUIManager>();
loadingController = FindObjectOfType<LoadingController>();
@@ -203,18 +206,28 @@ public class CyclingController : DeviceServiceMonoBase
break;
}
AutoStart();
InitPlayer();
}
//初始化人物位置角度
private void InitPlayer()
{
lockView = true;
if (recorderData != null)
{
var lastLatLon = Along(recorderData.EndDistance);
player.transform.position = map.GeoToWorldPosition(lastLatLon);
}
else
{
var lastLatLon = Along(0);
player.transform.position = map.GeoToWorldPosition(lastLatLon);
}
TrailRenderer trail = player.GetComponent<TrailRenderer>();
PlayerController playerController = player.GetComponent<PlayerController>();
Vector2d lastLatLon = Along(recorderData.EndDistance);
Vector3 currentPos = map.GeoToWorldPosition(lastLatLon);
currentPos.y += 1f;
player.transform.position = currentPos;
playerController.currentPos = currentPos;
trail.Clear();
Vector2d nextLatLon = Along(recorderData.EndDistance + 0.1);
//设定人物方向
var s = map.GeoToWorldPosition(lastLatLon);
var e = map.GeoToWorldPosition(nextLatLon);
Quaternion neededRotation = Quaternion.LookRotation(s - e);
player.transform.rotation = Quaternion.Euler(0, neededRotation.eulerAngles.y, 0);
playerController.currentRotation = neededRotation;
}
SingleUIManager singleUIManager;
public void AutoStart()
@@ -231,32 +244,45 @@ public class CyclingController : DeviceServiceMonoBase
public bool Is3dView;
public void ChangeMapImageStyle(GameObject arrowGameObj)
{
var playerController = player.GetComponent<PlayerController>();
var trailRenderer = player.GetComponent<TrailRenderer>();
trailRenderer.time = 0;
StartCoroutine(EnableTrailRenderer(trailRenderer));
if (!Is3dView)
{
//地图属性变更
map.Terrain.ExaggerationFactor = 1.5f;
map.Terrain.SetElevationType(ElevationLayerType.TerrainWithElevation);
map.ImageLayer.SetLayerSource(ImagerySourceType.Custom);
//map.SetTileMaterial(new Material());
Is3dView = true;
map.SetCenterLatitudeLongitude(playerController.Currentlatlong);
//人物属性变更
var pos = map.GeoToWorldPosition(playerController.Currentlatlong);
playerController.currentPos = pos;
target.position = pos;
player.transform.localScale = new Vector3(3f, 3f, 3f);
player.transform.position = pos;
arrowGameObj.SetActive(false);
Is3dView = true;
}
//else
//{
// map.Terrain.ExaggerationFactor = 0f;
// map.Terrain.SetElevationType(ElevationLayerType.FlatTerrain);
// map.ImageLayer.SetLayerSource(ImagerySourceType.None);
// player.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
else
{
//地图属性变更
map.ImageLayer.SetLayerSource(ImagerySourceType.JuzeTest);
map.Terrain.ExaggerationFactor = 0f;
map.Terrain.SetElevationType(ElevationLayerType.FlatTerrain);
map.SetCenterLatitudeLongitude(playerController.Currentlatlong);
//人物属性变更
var pos = map.GeoToWorldPosition(playerController.Currentlatlong);
player.transform.position = pos;
player.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
target.position = pos;
playerController.currentPos = Vector3.zero;
// var playerController = player.GetComponent<PlayerController>();
// player.transform.position = map.GeoToWorldPosition(playerController.Currentlatlong);
// var trailRenderer = player.GetComponent<TrailRenderer>();
// trailRenderer.time = 0;
// StartCoroutine(EnableTrailRenderer(trailRenderer));
// Is3dView = false;
// arrowGameObj.SetActive(true);
//}
arrowGameObj.SetActive(true);
Is3dView = false;
}
}
private bool lockView = false;
private void Map_OnTileFinished(Mapbox.Unity.MeshGeneration.Data.UnityTile obj)
@@ -270,15 +296,22 @@ public class CyclingController : DeviceServiceMonoBase
if (recorderData != null)
{
var lastLatLon = Along(recorderData.EndDistance);
var nextLatLon = Along(recorderData.EndDistance+0.1);
player.transform.position = map.GeoToWorldPosition(lastLatLon);
//设定人物方向
var s = map.GeoToWorldPosition(lastLatLon);
var e = map.GeoToWorldPosition(nextLatLon);
Quaternion neededRotation = Quaternion.LookRotation(s - e);
player.transform.rotation = Quaternion.Euler(0, neededRotation.eulerAngles.y, 0);
}
}
}
IEnumerator EnableTrailRenderer(TrailRenderer trailRenderer)
{
yield return new WaitForSeconds(1f);
trailRenderer.time = 10;
yield return new WaitForSeconds(2f);
trailRenderer.Clear();
trailRenderer.time = 30;
}
#endregion
@@ -287,7 +320,7 @@ public class CyclingController : DeviceServiceMonoBase
//开始骑行
public void SetStart()
{
if (!isPause)
if (!isPause || DateTime.MinValue == startTime)
{
isStart = true;
startTime = DateTime.Now;