骑行细节优化(视角缩放,海拔图拉伸)
This commit is contained in:
parent
083b414be0
commit
b1fedd4831
@ -94,7 +94,9 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
slope = panel.transform.Find("Slope").GetComponent<Text>();
|
slope = panel.transform.Find("Slope").GetComponent<Text>();
|
||||||
mapRouteImage = panel.transform.Find("MapRouteImage").GetComponent<RawImage>();
|
mapRouteImage = panel.transform.Find("MapRouteImage").GetComponent<RawImage>();
|
||||||
slider = panel.transform.Find("Process").GetComponent<Slider>();
|
slider = panel.transform.Find("Process").GetComponent<Slider>();
|
||||||
|
slider.gameObject.SetActive(false);
|
||||||
processText = panel.transform.Find("ProcessText").GetComponent<Text>();
|
processText = panel.transform.Find("ProcessText").GetComponent<Text>();
|
||||||
|
processText.gameObject.SetActive(false);
|
||||||
mapDescText = panel.transform.Find("MapDesc").GetComponent<Text>();
|
mapDescText = panel.transform.Find("MapDesc").GetComponent<Text>();
|
||||||
rideNow = panel.transform.Find("RideNow").GetComponent<Button>();
|
rideNow = panel.transform.Find("RideNow").GetComponent<Button>();
|
||||||
rideNowText = rideNow.transform.Find("Text").GetComponent<Text>();
|
rideNowText = rideNow.transform.Find("Text").GetComponent<Text>();
|
||||||
@ -176,21 +178,12 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
{
|
{
|
||||||
if (!rideNow.IsInteractable())
|
if (!rideNow.IsInteractable())
|
||||||
return;
|
return;
|
||||||
//var checkAnt = cyclingController.CheckAnt();
|
rideNow.interactable = false;
|
||||||
//#if UNITY_EDITOR
|
processText.gameObject.SetActive(true);
|
||||||
// checkAnt = true;
|
slider.gameObject.SetActive(true);
|
||||||
//#endif
|
var preValue = slider.value;
|
||||||
// if (!checkAnt && !cyclingController.isWatch)
|
slider.value = 0;
|
||||||
// {
|
slider.DOValue(preValue, 2).onComplete+=()=> {
|
||||||
//#if UNITY_IOS || UNITY_ANDROID
|
|
||||||
// var alert = (GameObject)Instantiate(Resources.Load("UI/Prefab/Ride/Mobile/Alert"), panel.transform);
|
|
||||||
//#else
|
|
||||||
// var alert = (GameObject)Instantiate(Resources.Load("UI/Prefab/Ride/Alert"), panel.transform);
|
|
||||||
//#endif
|
|
||||||
// alert.SetActive(true);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
{
|
|
||||||
cyclingController.InitTcp();
|
cyclingController.InitTcp();
|
||||||
MapUDPService.SendGizpModel();
|
MapUDPService.SendGizpModel();
|
||||||
cyclingController.ReSetUIManager();
|
cyclingController.ReSetUIManager();
|
||||||
@ -198,7 +191,21 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
//启用ridenow
|
//启用ridenow
|
||||||
canvasGroup.blocksRaycasts = false;
|
canvasGroup.blocksRaycasts = false;
|
||||||
depressFlag = true;
|
depressFlag = true;
|
||||||
}
|
};
|
||||||
|
//var checkAnt = cyclingController.CheckAnt();
|
||||||
|
//#if UNITY_EDITOR
|
||||||
|
// checkAnt = true;
|
||||||
|
//#endif
|
||||||
|
// if (!checkAnt && !cyclingController.isWatch)
|
||||||
|
// {
|
||||||
|
//#if UNITY_IOS || UNITY_ANDROID
|
||||||
|
// var alert = (GameObject)Instantiate(Resources.Load("UI/Prefab/Ride/Mobile/Alert"), panel.transform);
|
||||||
|
//#else
|
||||||
|
// var alert = (GameObject)Instantiate(Resources.Load("UI/Prefab/Ride/Alert"), panel.transform);
|
||||||
|
//#endif
|
||||||
|
// alert.SetActive(true);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
}
|
}
|
||||||
protected virtual void Cancel(BaseEventData baseEvent)
|
protected virtual void Cancel(BaseEventData baseEvent)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -106,6 +106,8 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
|
|
||||||
protected Slider cameraSlider;
|
protected Slider cameraSlider;
|
||||||
|
|
||||||
|
protected Transform graphChart;
|
||||||
|
|
||||||
protected virtual void Awake()
|
protected virtual void Awake()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -158,9 +160,11 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
mapName = uipanel.transform.Find("TitlePanel/MapName").GetComponent<Text>();
|
mapName = uipanel.transform.Find("TitlePanel/MapName").GetComponent<Text>();
|
||||||
totalClimb = uipanel.transform.Find("ComputerPanel/TotalClimb").GetComponent<Text>();
|
totalClimb = uipanel.transform.Find("ComputerPanel/TotalClimb").GetComponent<Text>();
|
||||||
//img = uipanel.transform.Find("ElevationChart/HeadImage").GetComponent<RawImage>();
|
//img = uipanel.transform.Find("ElevationChart/HeadImage").GetComponent<RawImage>();
|
||||||
head = uipanel.transform.Find("GraphChart/HeadPanel/Head").GetComponent<RawImage>();
|
graphChart = uipanel.transform.Find("GraphChart");
|
||||||
headPanel = uipanel.transform.Find("GraphChart/HeadPanel").gameObject;
|
head = graphChart.Find("HeadPanel/Head").GetComponent<RawImage>();
|
||||||
t = uipanel.transform.Find("GraphChart/Button");
|
headPanel = graphChart.Find("HeadPanel").gameObject;
|
||||||
|
t = graphChart.Find("Button");
|
||||||
|
|
||||||
miniMap = uipanel.transform.Find("MiniMap").gameObject;
|
miniMap = uipanel.transform.Find("MiniMap").gameObject;
|
||||||
|
|
||||||
alertPanel = uipanel.transform.Find("Alert").gameObject;
|
alertPanel = uipanel.transform.Find("Alert").gameObject;
|
||||||
@ -361,10 +365,14 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CameraVector.x = cameraX;
|
//3d视角跟随人物转动
|
||||||
CameraVector.y = cameraY;
|
//CameraVector.x = cameraX;
|
||||||
CameraVector.z = cameraZ;
|
//CameraVector.y = cameraY;
|
||||||
target.transform.eulerAngles = CameraVector;
|
//CameraVector.z = cameraZ;
|
||||||
|
//target.transform.eulerAngles = CameraVector;
|
||||||
|
Vector3 v = Vector3.zero;
|
||||||
|
v.y += mainController.currentPlayer.currentRotation.eulerAngles.y + 160f; //target.transform.rotation = playerController.transform.rotation;//new Quaternion(playerController.transform.rotation.x, playerController.transform.rotation.y +1f, playerController.transform.rotation.z, playerController.transform.rotation.w);
|
||||||
|
target.transform.eulerAngles = v; //.Set(0, playerController.currentRotation.eulerAngles.y + 160f, 0);// = new Vector3(0, playerController.transform.eulerAngles.y + 160f, 0);
|
||||||
}
|
}
|
||||||
//控制照片移动
|
//控制照片移动
|
||||||
((RectTransform)arrow.transform).position = Camera.main.WorldToScreenPoint(target.transform.position);
|
((RectTransform)arrow.transform).position = Camera.main.WorldToScreenPoint(target.transform.position);
|
||||||
@ -540,6 +548,19 @@ namespace Assets.Scenes.Ride.Scripts
|
|||||||
|
|
||||||
#if UNITY_IOS || UNITY_ANDROID
|
#if UNITY_IOS || UNITY_ANDROID
|
||||||
toolbar.transform.DOLocalMove(new Vector3(toolbar.transform.localPosition.x, toolbar.transform.localPosition.y + isSimple * 260f, toolbar.transform.localPosition.z), 1);
|
toolbar.transform.DOLocalMove(new Vector3(toolbar.transform.localPosition.x, toolbar.transform.localPosition.y + isSimple * 260f, toolbar.transform.localPosition.z), 1);
|
||||||
|
//中间的海拔图变长
|
||||||
|
if (isSimple == 1)
|
||||||
|
{
|
||||||
|
graphChart.DOMoveX(0, 1f);
|
||||||
|
var graphRect = ((RectTransform)graphChart);
|
||||||
|
graphRect.sizeDelta = new Vector2(App.MobileResolution.x, graphRect.rect.height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
graphChart.DOLocalMoveX(-250f, 1f);
|
||||||
|
var graphRect = ((RectTransform)graphChart);
|
||||||
|
graphRect.sizeDelta = new Vector2(500f, graphRect.rect.height);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
viewButton.transform.DOLocalMove(new Vector3(viewButton.transform.localPosition.x + isSimple * 200f, viewButton.transform.localPosition.y, viewButton.transform.localPosition.z), 1);
|
viewButton.transform.DOLocalMove(new Vector3(viewButton.transform.localPosition.x + isSimple * 200f, viewButton.transform.localPosition.y, viewButton.transform.localPosition.z), 1);
|
||||||
nextSlopePanel.transform.DOLocalMove(new Vector3(nextSlopePanel.transform.localPosition.x, nextSlopePanel.transform.localPosition.y + isSimple * 260f, nextSlopePanel.transform.localPosition.z), 1);
|
nextSlopePanel.transform.DOLocalMove(new Vector3(nextSlopePanel.transform.localPosition.x, nextSlopePanel.transform.localPosition.y + isSimple * 260f, nextSlopePanel.transform.localPosition.z), 1);
|
||||||
|
|||||||
@ -273,25 +273,11 @@ public class CyclingController : DeviceServiceMonoBase
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bool _dragStartedOnUI = false;
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
base.Update();
|
base.Update();
|
||||||
//CamControl();
|
//CamControl();
|
||||||
#if UNITY_IOS || UNITY_ANDROID
|
|
||||||
if (competitionId == 0 && singleUIManager != null)
|
|
||||||
{
|
|
||||||
var mouse = Input.GetMouseButton(0);
|
|
||||||
|
|
||||||
if (mouse && isStart && singleUIManager.clearLock)
|
|
||||||
{
|
|
||||||
if (IsPointerOverGameObject(Input.mousePosition))
|
|
||||||
{
|
|
||||||
singleUIManager?.ClearPanel(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
timer -= Time.deltaTime;
|
timer -= Time.deltaTime;
|
||||||
if (timer <= 0)//定时器 一秒执行一次
|
if (timer <= 0)//定时器 一秒执行一次
|
||||||
{
|
{
|
||||||
@ -318,7 +304,82 @@ public class CyclingController : DeviceServiceMonoBase
|
|||||||
timer += 1.0f;
|
timer += 1.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LateUpdate()
|
||||||
|
{
|
||||||
|
#if UNITY_IOS || UNITY_ANDROID
|
||||||
|
if (competitionId == 0 && singleUIManager != null)
|
||||||
|
{
|
||||||
|
HandleTouch();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
public bool isWatch { get; set; }
|
public bool isWatch { get; set; }
|
||||||
|
private Vector3 currentCameraPos { get; set; }
|
||||||
|
|
||||||
|
Vector3 far = new Vector3(-25, 73, -70);
|
||||||
|
Vector3 plane = new Vector3(-15, 43, -40);
|
||||||
|
Vector3 near = new Vector3(-8, 23, -20);
|
||||||
|
List<Vector3> cameraList { get; set; }
|
||||||
|
|
||||||
|
private void HandleTouch()
|
||||||
|
{
|
||||||
|
var touchCount = Input.touchCount;
|
||||||
|
switch (Input.touchCount)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
//单击切换极简模式
|
||||||
|
if (Input.touches[0].tapCount >= 2 && isStart && singleUIManager.clearLock)
|
||||||
|
{
|
||||||
|
if (IsPointerOverGameObject(Input.mousePosition))
|
||||||
|
{
|
||||||
|
singleUIManager?.ClearPanel(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
//双手触摸移动摄像机
|
||||||
|
// Store both touches.
|
||||||
|
Touch touchZero = Input.GetTouch(0);
|
||||||
|
Touch touchOne = Input.GetTouch(1);
|
||||||
|
|
||||||
|
// Find the position in the previous frame of each touch.
|
||||||
|
Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
|
||||||
|
Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;
|
||||||
|
|
||||||
|
// Find the magnitude of the vector (the distance) between the touches in each frame.
|
||||||
|
float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
|
||||||
|
float touchDeltaMag = (touchZero.position - touchOne.position).magnitude;
|
||||||
|
var offset = touchDeltaMag - prevTouchDeltaMag;
|
||||||
|
|
||||||
|
if (cameraList == null)
|
||||||
|
{
|
||||||
|
cameraList = new List<Vector3>();
|
||||||
|
cameraList.Add(near);
|
||||||
|
cameraList.Add(plane);
|
||||||
|
cameraList.Add(far);
|
||||||
|
}
|
||||||
|
var prePos = Camera.main.transform.localPosition;
|
||||||
|
var nextPos = Camera.main.transform.localPosition;
|
||||||
|
if (offset < 0)
|
||||||
|
{
|
||||||
|
nextPos = cameraList.Where(c => c.y > Camera.main.transform.localPosition.y).FirstOrDefault();
|
||||||
|
if (nextPos != Vector3.zero)
|
||||||
|
StartCoroutine(MoveCamera(prePos, nextPos));
|
||||||
|
}
|
||||||
|
if (offset > 0)
|
||||||
|
{
|
||||||
|
nextPos = cameraList.Where(c => c.y < Camera.main.transform.localPosition.y).LastOrDefault();
|
||||||
|
if (nextPos != Vector3.zero)
|
||||||
|
StartCoroutine(MoveCamera(prePos, nextPos));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理中断骑行
|
/// 处理中断骑行
|
||||||
@ -570,10 +631,23 @@ public class CyclingController : DeviceServiceMonoBase
|
|||||||
{
|
{
|
||||||
chartDataSourceScript.InitHorizontalScrolling(index);
|
chartDataSourceScript.InitHorizontalScrolling(index);
|
||||||
}
|
}
|
||||||
//SingleUIManager singleUIManager;
|
|
||||||
public BaseUIManager singleUIManager;
|
private IEnumerator MoveCamera(Vector3 prePos, Vector3 nextPos)
|
||||||
|
{
|
||||||
|
float t = 0;
|
||||||
|
while (t < 1)
|
||||||
|
{
|
||||||
|
t += Time.deltaTime;
|
||||||
|
Vector3 v = Vector3.Lerp(prePos, nextPos, t);
|
||||||
|
Camera.main.transform.localPosition = v;
|
||||||
|
yield return new WaitForEndOfFrame();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//SingleUIManager singleUIManager;
|
||||||
|
public BaseUIManager singleUIManager;
|
||||||
public void GameStart()
|
public void GameStart()
|
||||||
{
|
{
|
||||||
|
StartCoroutine(MoveCamera(far, plane));//初始摄像头
|
||||||
var check = CheckAnt();
|
var check = CheckAnt();
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
check = true;
|
check = true;
|
||||||
@ -923,6 +997,7 @@ public class CyclingController : DeviceServiceMonoBase
|
|||||||
public void ClearTempFile()
|
public void ClearTempFile()
|
||||||
{
|
{
|
||||||
Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder);
|
Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder);
|
||||||
|
App.tempRecordData = null;
|
||||||
}
|
}
|
||||||
TempRecordData tempRecordData { get; set; }
|
TempRecordData tempRecordData { get; set; }
|
||||||
public void SaveRealTime()
|
public void SaveRealTime()
|
||||||
@ -949,6 +1024,7 @@ public class CyclingController : DeviceServiceMonoBase
|
|||||||
|
|
||||||
public void Save(double totalDistance)
|
public void Save(double totalDistance)
|
||||||
{
|
{
|
||||||
|
ClearTempFile();
|
||||||
cyclingController.recorderData.EndTime = UIManager.Now.GetDateTime();
|
cyclingController.recorderData.EndTime = UIManager.Now.GetDateTime();
|
||||||
isQuit = true;
|
isQuit = true;
|
||||||
isStart = false;
|
isStart = false;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user