骑行细节优化(视角缩放,海拔图拉伸)
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>();
|
||||
mapRouteImage = panel.transform.Find("MapRouteImage").GetComponent<RawImage>();
|
||||
slider = panel.transform.Find("Process").GetComponent<Slider>();
|
||||
slider.gameObject.SetActive(false);
|
||||
processText = panel.transform.Find("ProcessText").GetComponent<Text>();
|
||||
processText.gameObject.SetActive(false);
|
||||
mapDescText = panel.transform.Find("MapDesc").GetComponent<Text>();
|
||||
rideNow = panel.transform.Find("RideNow").GetComponent<Button>();
|
||||
rideNowText = rideNow.transform.Find("Text").GetComponent<Text>();
|
||||
@ -176,21 +178,12 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
if (!rideNow.IsInteractable())
|
||||
return;
|
||||
//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
|
||||
{
|
||||
rideNow.interactable = false;
|
||||
processText.gameObject.SetActive(true);
|
||||
slider.gameObject.SetActive(true);
|
||||
var preValue = slider.value;
|
||||
slider.value = 0;
|
||||
slider.DOValue(preValue, 2).onComplete+=()=> {
|
||||
cyclingController.InitTcp();
|
||||
MapUDPService.SendGizpModel();
|
||||
cyclingController.ReSetUIManager();
|
||||
@ -198,7 +191,21 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
//启用ridenow
|
||||
canvasGroup.blocksRaycasts = false;
|
||||
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)
|
||||
{
|
||||
|
||||
@ -106,6 +106,8 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
|
||||
protected Slider cameraSlider;
|
||||
|
||||
protected Transform graphChart;
|
||||
|
||||
protected virtual void Awake()
|
||||
{
|
||||
|
||||
@ -158,9 +160,11 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
mapName = uipanel.transform.Find("TitlePanel/MapName").GetComponent<Text>();
|
||||
totalClimb = uipanel.transform.Find("ComputerPanel/TotalClimb").GetComponent<Text>();
|
||||
//img = uipanel.transform.Find("ElevationChart/HeadImage").GetComponent<RawImage>();
|
||||
head = uipanel.transform.Find("GraphChart/HeadPanel/Head").GetComponent<RawImage>();
|
||||
headPanel = uipanel.transform.Find("GraphChart/HeadPanel").gameObject;
|
||||
t = uipanel.transform.Find("GraphChart/Button");
|
||||
graphChart = uipanel.transform.Find("GraphChart");
|
||||
head = graphChart.Find("HeadPanel/Head").GetComponent<RawImage>();
|
||||
headPanel = graphChart.Find("HeadPanel").gameObject;
|
||||
t = graphChart.Find("Button");
|
||||
|
||||
miniMap = uipanel.transform.Find("MiniMap").gameObject;
|
||||
|
||||
alertPanel = uipanel.transform.Find("Alert").gameObject;
|
||||
@ -361,10 +365,14 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
}
|
||||
else
|
||||
{
|
||||
CameraVector.x = cameraX;
|
||||
CameraVector.y = cameraY;
|
||||
CameraVector.z = cameraZ;
|
||||
target.transform.eulerAngles = CameraVector;
|
||||
//3d视角跟随人物转动
|
||||
//CameraVector.x = cameraX;
|
||||
//CameraVector.y = cameraY;
|
||||
//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);
|
||||
@ -540,6 +548,19 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
|
||||
#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);
|
||||
//中间的海拔图变长
|
||||
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
|
||||
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);
|
||||
|
||||
@ -273,25 +273,11 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
return false;
|
||||
}
|
||||
}
|
||||
bool _dragStartedOnUI = false;
|
||||
protected override void Update()
|
||||
{
|
||||
base.Update();
|
||||
//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;
|
||||
if (timer <= 0)//定时器 一秒执行一次
|
||||
{
|
||||
@ -318,7 +304,82 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
timer += 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
{
|
||||
#if UNITY_IOS || UNITY_ANDROID
|
||||
if (competitionId == 0 && singleUIManager != null)
|
||||
{
|
||||
HandleTouch();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
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>
|
||||
/// 处理中断骑行
|
||||
@ -570,10 +631,23 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
{
|
||||
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()
|
||||
{
|
||||
StartCoroutine(MoveCamera(far, plane));//初始摄像头
|
||||
var check = CheckAnt();
|
||||
#if UNITY_EDITOR
|
||||
check = true;
|
||||
@ -923,6 +997,7 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
public void ClearTempFile()
|
||||
{
|
||||
Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder);
|
||||
App.tempRecordData = null;
|
||||
}
|
||||
TempRecordData tempRecordData { get; set; }
|
||||
public void SaveRealTime()
|
||||
@ -949,6 +1024,7 @@ public class CyclingController : DeviceServiceMonoBase
|
||||
|
||||
public void Save(double totalDistance)
|
||||
{
|
||||
ClearTempFile();
|
||||
cyclingController.recorderData.EndTime = UIManager.Now.GetDateTime();
|
||||
isQuit = true;
|
||||
isStart = false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user