骑行视角手势&移除按钮音效

This commit is contained in:
lishuo 2021-12-22 14:25:57 +08:00
parent c8c27bd021
commit fc55360be0
7 changed files with 1444 additions and 1383 deletions

File diff suppressed because it is too large Load Diff

View File

@ -352,16 +352,13 @@ namespace Assets.Scenes.Ride.Scripts
//移动摄像头
public void MoveCamera()
{
if (target != null)
if (target != null && mainController.Is3dView && mainController.RotateLock && mainController.currentPlayer.Speed > 0)
{
if (mainController.Is3dView)
Vector3 v = Vector3.zero;
v.y += mainController.currentPlayer.currentRotation.eulerAngles.y + 160f;
if (mainController.RotateLock)
{
if(mainController.RotateLock && mainController.currentPlayer.Speed > 0)
{
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.DOLocalRotate(v, 1.5f, RotateMode.FastBeyond360);
}
target.transform.DOLocalRotate(v, 1f, RotateMode.Fast);
}
}
}
@ -378,7 +375,8 @@ namespace Assets.Scenes.Ride.Scripts
//mainController.player.transform.localScale.Set(0.1f, 0.1f, 0.1f);
player.transform.localScale = m;
}
target.transform.DOLocalMove(mainController.currentPlayer.currentPos, 0.5f); //player.transform.position;// new Vector3((float)Math.Round(player.transform.position.x,1), 0, (float)Math.Round(player.transform.position.z,1));
target.transform.position = mainController.currentPlayer.currentPos;
//target.transform.DOLocalMove(mainController.currentPlayer.currentPos, 0.5f); //player.transform.position;// new Vector3((float)Math.Round(player.transform.position.x,1), 0, (float)Math.Round(player.transform.position.z,1));
//控制照片移动
((RectTransform)arrow.transform).position = Camera.main.WorldToScreenPoint(target.transform.position);
if (mainController.currentPlayer.Speed > 0 && mainController.isStart)

View File

@ -24,6 +24,7 @@ using UnityEngine.UI;
using System.Diagnostics;
using UnityEngine.SceneManagement;
using DG.Tweening;
using System.Timers;
public class CyclingController : DeviceServiceMonoBase
{
@ -174,6 +175,8 @@ public class CyclingController : DeviceServiceMonoBase
public bool RotateLock = true;
private bool touchLock = true;
private void Start()
{
var uicanvasScaler = UIObject.GetComponent<CanvasScaler>();
@ -233,26 +236,7 @@ public class CyclingController : DeviceServiceMonoBase
SceneManager.activeSceneChanged += SceneManager_activeSceneChanged;
#region &PC鼠标的控制
var rotationRecognizer = new TKOneFingerRotationRecognizer
{
targetPosition = Camera.main.WorldToScreenPoint(target.position)
};
rotationRecognizer.gestureRecognizedEvent += (r) =>
{
RotateLock = false;
DOTween.KillAll();
if (Is3dView && IsPointerOverGameObject(r.startTouchLocation()))
target.transform.Rotate(new Vector3(0, 1, 0), r.deltaRotation);
};
rotationRecognizer.gestureCompleteEvent += (r) => {
RotateLock = true;
};
TouchKit.addGestureRecognizer(rotationRecognizer);
#endregion
HandleTouchAndInput();
//进入比赛
if (competitionId > 0)
{
@ -277,6 +261,92 @@ public class CyclingController : DeviceServiceMonoBase
{
ClearTempFile();
}
#region &PC鼠标的控制
private void HandleTouchAndInput()
{
var rotationRecognizer = new TKOneFingerRotationRecognizer
{
targetPosition = Camera.main.WorldToScreenPoint(target.position)
};
rotationRecognizer.gestureRecognizedEvent += (r) =>
{
if (Is3dView && IsPointerOverGameObject(r.startTouchLocation()))
{
RotateLock = false;
DOTween.Kill(target);
target.transform.Rotate(new Vector3(0, 1, 0), r.deltaRotation);
}
};
var timer = new Timer
{
Interval = 1000
};
timer.Elapsed += (s, e) =>
{
RotateLock = true;
timer.Stop();
};
rotationRecognizer.gestureCompleteEvent += (r) => {
UnityEngine.Debug.Log("gestureCompleteEvent");
timer.Start();
};
TouchKit.addGestureRecognizer(rotationRecognizer);
//单指
var touchRecognizer = new TKAnyTouchRecognizer(new TKRect(0, 0, Screen.width, Screen.height));
DateTime startTimpStamp = DateTime.Now;
touchRecognizer.onEnteredEvent += (r) =>
{
startTimpStamp = DateTime.Now;
};
touchRecognizer.onExitedEvent += (r) =>
{
if (competitionId == 0 && isStart && IsPointerOverGameObject(r.startTouchLocation()))
{
var timespan = DateTime.Now - startTimpStamp;
UnityEngine.Debug.Log($"{timespan.TotalMilliseconds}");
if (timespan.TotalMilliseconds <= 120)
{
singleUIManager?.ClearPanel(null);
}
}
};
TouchKit.addGestureRecognizer(touchRecognizer);
//双指
var PinchRecognizer = new TKPinchRecognizer();
PinchRecognizer.gestureRecognizedEvent += (r) =>
{
if (Is3dView && IsPointerOverGameObject(PinchRecognizer.startTouchLocation()))
{
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 (r.deltaScale < 0)
{
nextPos = cameraList.Where(c => c.y > Camera.main.transform.localPosition.y).FirstOrDefault();
if (nextPos != Vector3.zero)
Camera.main.transform.DOLocalMove(nextPos, 0.5f);
//StartCoroutine(MoveCamera(prePos, nextPos));
}
if (r.deltaScale > 0)
{
nextPos = cameraList.Where(c => c.y < Camera.main.transform.localPosition.y).LastOrDefault();
if (nextPos != Vector3.zero)
Camera.main.transform.DOLocalMove(nextPos, 0.5f);
//StartCoroutine(MoveCamera(prePos, nextPos));
}
}
};
TouchKit.addGestureRecognizer(PinchRecognizer);
}
/// <summary>
/// 检测是否点击UI
/// </summary>
@ -299,6 +369,8 @@ public class CyclingController : DeviceServiceMonoBase
return false;
}
}
#endregion
bool _dragStartedOnUI = false;
protected override void Update()
{
@ -333,23 +405,14 @@ public class CyclingController : DeviceServiceMonoBase
float touchTimer = 0.1f;
private void FixedUpdate()
{
touchTimer -= Time.deltaTime;
if (touchTimer <= 0)
{
#if UNITY_IOS || UNITY_ANDROID
HandleTouch();
#else
HandleMouseScrollWheel();
#endif
touchTimer += 0.1f;
}
}
public bool isWatch { get; set; }
private Vector3 currentCameraPos { get; set; }
Vector3 far = new Vector3(-25, 73, -70);
Vector3 far = new Vector3(-18, 53, -48);
Vector3 plane = new Vector3(-15, 43, -40);
Vector3 near = new Vector3(-8, 23, -20);
Vector3 near = new Vector3(-12, 35, -30);
List<Vector3> cameraList { get; set; }
/// <summary>
@ -373,14 +436,16 @@ public class CyclingController : DeviceServiceMonoBase
{
nextPos = cameraList.Where(c => c.y > Camera.main.transform.localPosition.y).FirstOrDefault();
if (nextPos != Vector3.zero)
StartCoroutine(MoveCamera(prePos, nextPos));
Camera.main.transform.DOLocalMove(nextPos, 0.5f);
//StartCoroutine(MoveCamera(prePos, nextPos));
}
if (scrollDelta > 0)
{
nextPos = cameraList.Where(c => c.y < Camera.main.transform.localPosition.y).LastOrDefault();
if (nextPos != Vector3.zero)
StartCoroutine(MoveCamera(prePos, nextPos));
Camera.main.transform.DOLocalMove(nextPos, 0.5f);
//StartCoroutine(MoveCamera(prePos, nextPos));
}
}
private void HandleTouch()
@ -432,13 +497,15 @@ public class CyclingController : DeviceServiceMonoBase
{
nextPos = cameraList.Where(c => c.y > Camera.main.transform.localPosition.y).FirstOrDefault();
if (nextPos != Vector3.zero)
StartCoroutine(MoveCamera(prePos, nextPos));
Camera.main.transform.DOLocalMove(nextPos, 0.5f);
//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));
Camera.main.transform.DOLocalMove(nextPos, 0.5f);
//StartCoroutine(MoveCamera(prePos, nextPos));
}
}
break;
@ -697,22 +764,12 @@ public class CyclingController : DeviceServiceMonoBase
chartDataSourceScript.InitHorizontalScrolling(index);
}
private IEnumerator MoveCamera(Vector3 prePos, Vector3 nextPos)
{
float t = 0;
while (t < 0.37f)
{
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));//初始摄像头
Camera.main.transform.DOLocalMove(near, 1.5f);
//StartCoroutine(MoveCamera(far, near));//初始摄像头
var check = CheckAnt();
#if UNITY_EDITOR
check = true;

View File

@ -1,4 +1,5 @@
using Assets.Scenes.Ride.Scripts.Model;
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
@ -89,12 +90,17 @@ namespace Assets.Scenes.Ride.Scripts
if (cyclingController.currentPlayer.UserId == item.Id)
{
nearByItemscript.setHead(item.Headimage);
nearByItemscript.transform.SetAsFirstSibling();
}
else
{
nearByItemscript.transform.SetSiblingIndex((int)Math.Ceiling(item.Near));
}
#if !(UNITY_IOS || UNITY_ANDROID)
nearByItemscript.setCountry(cyclingController.GetCountryImageByName(item.Country));
#endif
nearByItemscript.setDistance(item.Near.ToString() + "KM");
nearByItemscript.transform.SetSiblingIndex((int)item.Near);
}
}
}

View File

@ -26,8 +26,8 @@ namespace Assets.Scenes.Ride.Scripts
currentlatlong = mainController.GetCenterCoordinate();
uipanel = mainController.GetUIPanel();
trail = FindObjectOfType<TrailRenderer>();
trail.startWidth = 1f;
trail.endWidth = 1f;
trail.startWidth = 0.5f;
trail.endWidth = 0.5f;
trail.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 1f);
trail.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 1f);
//var color7 = Resources.Load<Material>("UI/Material/color7");
@ -60,9 +60,9 @@ namespace Assets.Scenes.Ride.Scripts
cadance = mainController.UpdateCadence();
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
#if UNITY_EDITOR
//#if UNITY_EDITOR
power = 1430;
#endif
//#endif
mainController.TrackResistance(currentSlope * App.RideSetting.Sensitivity / 100);
}
catch (Exception ex)

View File

@ -203,13 +203,13 @@ namespace Assets.Scenes.Ride.Scripts
lineRender.startColor = new Color(1, 1, 1, 0.65f);
//设置宽度
lineRender.startWidth = 1.5f;
lineRender.endWidth = 1.5f;
lineRender.startWidth = 1f;
lineRender.endWidth = 1f;
lineRender.positionCount = dat.Count;
lineRender.SetPositions(feat.Points[0].ToArray());
lineRender.loop = false;
lineRender.numCapVertices = 10;
//lineRender.numCornerVertices = 30;
lineRender.numCornerVertices = 30;
}
@ -231,13 +231,13 @@ namespace Assets.Scenes.Ride.Scripts
lineRender.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f);
//设置宽度
lineRender.startWidth = 1f;
lineRender.endWidth = 1f;
lineRender.startWidth = 0.5f;
lineRender.endWidth = 0.5f;
lineRender.positionCount = feat.Count;
lineRender.SetPositions(feat.ToArray());
lineRender.loop = false;
lineRender.numCapVertices = 10;
//lineRender.numCornerVertices = 10;
lineRender.numCornerVertices = 10;
//
lineRender.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
lineRender.allowOcclusionWhenDynamic = false;

View File

@ -925,12 +925,12 @@ public class UIManager : MonoBehaviour
{
return;
}
if (eventTriggerType == EventTriggerType.PointerClick)
{
var audioSource = gameObject.GetComponent<AudioSource>();
if (audioSource != null)
audioSource.PlayOneShot(buttonClip);
}
//if (eventTriggerType == EventTriggerType.PointerClick)
//{
// var audioSource = gameObject.GetComponent<AudioSource>();
// if (audioSource != null)
// audioSource.PlayOneShot(buttonClip);
//}
call(e);
});
@ -942,17 +942,17 @@ public class UIManager : MonoBehaviour
{
cursor = Resources.Load<Texture2D>("Images/PointerButtonHover");
}
//设置点击音效
if (buttonClip == null)
{
buttonClip = Resources.Load<AudioClip>("audio/高科技UI点击触控警告提示反馈APP菜单UI-很酷的应用程序_爱给网_aigei_com");
}
var audioSource = gameObject.GetComponent<AudioSource>();
if (audioSource == null)
{
audioSource = gameObject.AddComponent<AudioSource>();
}
audioSource.volume = 0.5f;
////设置点击音效
//if (buttonClip == null)
//{
// buttonClip = Resources.Load<AudioClip>("audio/高科技UI点击触控警告提示反馈APP菜单UI-很酷的应用程序_爱给网_aigei_com");
//}
//var audioSource = gameObject.GetComponent<AudioSource>();
//if (audioSource == null)
//{
// audioSource = gameObject.AddComponent<AudioSource>();
//}
//audioSource.volume = 0.5f;
UIManager.AddEvent(gameObject, EventTriggerType.PointerEnter, (e) =>
{