视角切换&小地图模糊问题解决
This commit is contained in:
1 parent
9bc3864790
commit
e4d4333357
30 files changed
+3746
-2965
No files matched your search
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user