对战与AR骑行相关逻辑修改
This commit is contained in:
1 parent
3bcb3ee83e
commit
89b5275efd
64 files changed
+50131
-29495
No files matched your search
@@ -52,6 +52,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
Camera camera { get; set; }
|
||||
float currenPlayerHeight;
|
||||
Transform bone_bottle_2 { get; set; }
|
||||
//切换视角
|
||||
public double offsetX = 0d;
|
||||
public double offsetY = 0d;
|
||||
public double offsetZ = 0d;
|
||||
|
||||
protected virtual void Start()
|
||||
{
|
||||
@@ -142,15 +146,25 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
if (animator != null)
|
||||
{
|
||||
animator.SetFloat("preSpeed", (float)preSpeed);
|
||||
animator.SetFloat("speed", (float)speed);
|
||||
animator.SetFloat("grade", (float)currentSlope);
|
||||
animator.SetFloat("power", (float)power);
|
||||
//播放喝水和回头的动画
|
||||
var headBack = ticks % 60 == 0 && speed > 0;
|
||||
var drink = ticks % 125 == 0 && speed > 0;
|
||||
animator.SetBool("headBack", headBack);
|
||||
animator.SetBool("drinking", drink);
|
||||
if (manager._viewMode == VideoGameManager.ViewMode.FIRST &&manager.CurrentPlayer.UserId == App.CurrentUser.Id)
|
||||
{
|
||||
animator.SetFloat("preSpeed", (float)preSpeed);
|
||||
animator.SetFloat("speed", (float)Math.Min(speed,30));
|
||||
animator.SetFloat("grade", (float)currentSlope);
|
||||
animator.SetFloat("power", (float)power);
|
||||
}
|
||||
else
|
||||
{
|
||||
animator.SetFloat("preSpeed", (float)preSpeed);
|
||||
animator.SetFloat("speed", (float)speed);
|
||||
animator.SetFloat("grade", (float)currentSlope);
|
||||
animator.SetFloat("power", (float)power);
|
||||
//播放喝水和回头的动画
|
||||
var headBack = ticks % 60 == 0 && speed > 0;
|
||||
var drink = ticks % 125 == 0 && speed > 0;
|
||||
animator.SetBool("headBack", headBack);
|
||||
animator.SetBool("drinking", drink);
|
||||
}
|
||||
}
|
||||
}
|
||||
protected virtual int GetCurrentFrame()
|
||||
|
||||
@@ -59,7 +59,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
timer -= Time.deltaTime;
|
||||
while (timer < 0) {
|
||||
rideNum.text = $"{MapUDPService.GetAllOnlineUserCount()}";
|
||||
var list = MapUDPService.GetOnlineUsers(App.RouteIdParam);//最新列表
|
||||
rideNum.text = $"{list.Count}";
|
||||
btnRideNum.text = rideNum.text;
|
||||
if (manager._aRMode == VideoGameManager.ARMode.RIDE)
|
||||
{
|
||||
|
||||
@@ -22,11 +22,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
protected override void Update()
|
||||
{
|
||||
base.Update();
|
||||
//如果当前用户是被观察则控制视频播放
|
||||
if (manager.CurrentPlayer.UserId == UserId)
|
||||
{
|
||||
manager.Play(manager.CurrentPlayer.totalDistance);
|
||||
}
|
||||
////如果当前用户是被观察则控制视频播放
|
||||
//if (manager.CurrentPlayer.UserId == UserId)
|
||||
//{
|
||||
// manager.Play(manager.CurrentPlayer.totalDistance);
|
||||
//}
|
||||
}
|
||||
|
||||
//计算
|
||||
@@ -55,6 +55,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
protected override void Turn()
|
||||
{
|
||||
base.Turn();
|
||||
if (manager.CurrentPlayer.UserId == UserId)
|
||||
return;
|
||||
//计算前后位移
|
||||
var current = manager.CurrentPlayer;
|
||||
var interval = this.currentFrame - manager.GetCurrentFrame();
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
if (videoPlayer != null)
|
||||
{
|
||||
nameLabel.text = videoPlayer.UserName;
|
||||
distanceLabel.text = videoPlayer.totalDistance.ToString("f1");
|
||||
distanceLabel.text = "0M";///videoPlayer.totalDistance.ToString("f1");
|
||||
Id = videoPlayer.UserId.ToString();
|
||||
}
|
||||
timer += 1f;
|
||||
|
||||
@@ -87,6 +87,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
RIDE,
|
||||
INSPECT
|
||||
}
|
||||
|
||||
public enum ViewMode
|
||||
{
|
||||
THIRD,
|
||||
FIRST,
|
||||
}
|
||||
//当前是第一人称还是第三人称
|
||||
public ViewMode _viewMode { get; set; }
|
||||
//当前是观察者视角还是骑行者视角
|
||||
public ARMode _aRMode { get; set; }
|
||||
public int RankingId { get; set; }
|
||||
@@ -281,17 +289,25 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
SetCyclingModel(CyclingModel.Single);
|
||||
}
|
||||
}
|
||||
GameObject videoPlayer;
|
||||
//初始化人物模型
|
||||
public void InitCurrentPlayer()
|
||||
{
|
||||
GameObject videoPlayer;
|
||||
//初始化位置
|
||||
var firstpoint = mockDirection.FirstOrDefault();
|
||||
//videoPlayer.transform.DOMove(, 0);
|
||||
var p = new Vector3(firstpoint.PositionX, firstpoint.PositionY, firstpoint.PositionZ);
|
||||
if (App.CurrentUser.Sex == 1)
|
||||
{
|
||||
videoPlayer = Instantiate(Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer"),transform);
|
||||
var playerprefab = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer");
|
||||
playerprefab.transform.position = p;
|
||||
videoPlayer = Instantiate(playerprefab, transform);
|
||||
}
|
||||
else
|
||||
{
|
||||
videoPlayer = Instantiate(Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV"), transform);
|
||||
var playerprefabNV = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV");
|
||||
playerprefabNV.transform.position = p;
|
||||
videoPlayer = Instantiate(playerprefabNV, transform);
|
||||
}
|
||||
CurrentPlayer = videoPlayer.GetComponent<VideoPlayer>();
|
||||
}
|
||||
@@ -371,9 +387,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
private void MockDirection()
|
||||
{
|
||||
//var arr = mapRoute.ARConfig.Replace("\r\n", " ").Split(' ');
|
||||
var text = Resources.Load<TextAsset>("UI/direction");
|
||||
var arr = text.text.Replace("\r\n", " ").Split(' ');
|
||||
var arr = mapRoute.ARConfig.Replace("\r\n", " ").Split(' ');
|
||||
//var text = Resources.Load<TextAsset>("UI/direction");
|
||||
//var arr = text.text.Replace("\r\n", " ").Split(' ');
|
||||
foreach (var item in arr)
|
||||
{
|
||||
if (string.IsNullOrEmpty(item))
|
||||
@@ -433,7 +449,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//设置当前视频播放速度
|
||||
public void Play(double totalDistance)
|
||||
{
|
||||
if (!isStart)
|
||||
if (!isStart && _aRMode == ARMode.RIDE)
|
||||
return;
|
||||
if (mediaPlayer != null)
|
||||
{
|
||||
@@ -455,14 +471,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
isStart = !isStart;
|
||||
isStop = !isStop;
|
||||
//if (isStop)
|
||||
//{
|
||||
// mediaPlayer?.Pause();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// mediaPlayer?.Play();
|
||||
//}
|
||||
}
|
||||
//退出骑行
|
||||
public void Quit()
|
||||
|
||||
@@ -117,7 +117,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
if (File.Exists(filepath))
|
||||
{
|
||||
watch.SetActive(true);
|
||||
//TODO:暂时隐藏watch.SetActive(true);
|
||||
slider.value = 100;
|
||||
download.gameObject.SetActive(false);
|
||||
manager.SetMedia(filepath);
|
||||
|
||||
@@ -57,10 +57,13 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
base.Turn();
|
||||
//控制人物的前后左右
|
||||
var l = new Vector3(pre.PositionX, pre.PositionY, pre.PositionZ);
|
||||
var s = new Vector3(next.PositionX, next.PositionY, next.PositionZ);
|
||||
var pos = Vector3.Lerp(l, s, t);
|
||||
transform.DOMove(pos, 0);
|
||||
if (manager._viewMode != VideoGameManager.ViewMode.FIRST)
|
||||
{
|
||||
var l = new Vector3(pre.PositionX, pre.PositionY, pre.PositionZ);
|
||||
var s = new Vector3(next.PositionX, next.PositionY, next.PositionZ);
|
||||
var pos = Vector3.Lerp(l, s, t);
|
||||
transform.DOMove(pos, 0);
|
||||
}
|
||||
//控制光线
|
||||
var z = new Vector3(50, pre.LightY, 0);
|
||||
var c = new Vector3(50, next.LightY, 0);
|
||||
@@ -72,11 +75,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
heartRate = manager.UpDateHeart();
|
||||
power = manager.UpdatePower();
|
||||
cadance = manager.UpdateCadence();
|
||||
#if UNITY_EDITOR
|
||||
//#if !UNITY_EDITOR
|
||||
power = 280;
|
||||
cadance = 70;
|
||||
heartRate = 160;
|
||||
#endif
|
||||
//#endif
|
||||
weight = App.CurrentUser.Weight;
|
||||
bicycleWeight = App.CurrentUser.BicycleWeight;
|
||||
wkg = Math.Round(power / weight, 2);
|
||||
@@ -84,7 +87,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var result = manager.mockDirection.Where(c => c.Start < mainFrame && c.End > mainFrame).FirstOrDefault();
|
||||
bearing = result?.RotationY ?? 0;
|
||||
//发送阻力
|
||||
manager.TrackResistance(currentSlope);
|
||||
manager.TrackResistance(currentSlope * App.RideSetting.Sensitivity / 100);
|
||||
base.ComputePlayer();
|
||||
//比人先完成触发关门时间
|
||||
HandleForGameRoom();
|
||||
@@ -116,6 +119,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
protected override void ComputeRecord()
|
||||
{
|
||||
var mapData = manager.GetMapData();
|
||||
//Debug.Log($"ticks:{manager.GetCurrentFrame()}:{manager.GetMapData().List[currentIndex].Elevation}");
|
||||
//Debug.Log($"ticks:{ticks}-{manager.GetCurrentFrame()}-endistance:{totalDistance}-totalDistance:{mapData.TotalDistance}-index:{currentIndex}-speed:{speed}-currentSlope:{currentSlope}-GetCurrentFrame:{manager.GetCurrentFrame()}-currentlatLon:{bearing}");
|
||||
//记录骑行数据
|
||||
var recorderData = manager.cyclingController.recorderData;
|
||||
|
||||
@@ -6,6 +6,7 @@ using UnityEngine.UI;
|
||||
using DG.Tweening;
|
||||
using UnityEngine.SceneManagement;
|
||||
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
|
||||
using static Assets.Scripts.Scenes.VideoRide.VideoGameManager;
|
||||
|
||||
namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
@@ -31,7 +32,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
Image left { get; set; }
|
||||
Image right { get; set; }
|
||||
//ToolBarPanel
|
||||
GameObject pauseBtn { get; set; }
|
||||
GameObject settingBtn { get; set; }
|
||||
GameObject deviceBtn { get; set; }
|
||||
GameObject changeViewBtn { get; set; }
|
||||
GameObject quitBtn { get; set; }
|
||||
@@ -50,14 +51,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
GameObject ftpPanel { get; set; }
|
||||
Image ftpImage { get; set; }
|
||||
Text wkg { get; set; }
|
||||
public enum ViewMode
|
||||
{
|
||||
THIRD,
|
||||
FIRST,
|
||||
}
|
||||
//当前是第一人称还是第三人称
|
||||
public ViewMode _viewMode { get; set; }
|
||||
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
@@ -83,7 +77,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
heartRate.text = Math.Round((manager.CurrentPlayer.heartRate ?? 0d)).ToString();
|
||||
cadance.text = Math.Round(manager.CurrentPlayer.cadance).ToString();
|
||||
playerTimer.text = Helper.FormatTicks(manager.CurrentPlayer.ticks);
|
||||
distance.text = $"{Math.Round((manager.CurrentPlayer.totalDistance))}KM";
|
||||
distance.text = $"{Math.Round((manager.CurrentPlayer.totalDistance),2)}KM";
|
||||
left.fillAmount = (float)(Math.Round(manager.CurrentPlayer.power) / MAXPOWER_RATE);
|
||||
right.fillAmount = (float)(Math.Round((manager.CurrentPlayer.heartRate ?? 0f)) / MAXHEARRATE);
|
||||
SetSlopePanel();
|
||||
@@ -123,7 +117,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
left = transform.Find("Panel/ComputerPanel/Left").GetComponent<Image>();
|
||||
right = transform.Find("Panel/ComputerPanel/Right").GetComponent<Image>();
|
||||
//ToolBarPanel
|
||||
pauseBtn = transform.Find("Panel/ToolBarPanel/StartOrPauseButton").gameObject;
|
||||
settingBtn = transform.Find("Panel/ToolBarPanel/SettingButton").gameObject;
|
||||
quitBtn = transform.Find("Panel/ToolBarPanel/ExitButton").gameObject;
|
||||
changeViewBtn = transform.Find("Panel/ToolBarPanel/ChangeView").gameObject;
|
||||
deviceBtn = transform.Find("Panel/ToolBarPanel/DeviceButton").gameObject;
|
||||
@@ -145,7 +139,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//
|
||||
explosive = transform.Find("Panel/Explosive").gameObject;
|
||||
//toolbar 事件注册
|
||||
UIManager.AddEvent(pauseBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, PauseClick);
|
||||
UIManager.AddEvent(settingBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, PauseClick);
|
||||
UIManager.AddEvent(changeViewBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, ChangeViewClick);
|
||||
UIManager.AddEvent(deviceBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, DeviceClick);
|
||||
UIManager.AddEvent(quitBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, QuitClick);
|
||||
@@ -188,7 +182,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
private void PauseClick(BaseEventData e)
|
||||
{
|
||||
manager.Pause();
|
||||
settingPanel.SetActive(true);
|
||||
settingPanel.transform.SetAsLastSibling();
|
||||
}
|
||||
private void DeviceClick(BaseEventData e)
|
||||
{
|
||||
@@ -201,26 +196,18 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var nearByScript = FindObjectOfType<NearByScript>();
|
||||
var rankingScript = FindObjectOfType<RankingScript>();
|
||||
var currentPlayer = manager.CurrentPlayer == null ? videoPlayer.transform : manager.CurrentPlayer.transform;
|
||||
_viewMode = _viewMode == ViewMode.THIRD ? ViewMode.FIRST : ViewMode.THIRD;
|
||||
manager._viewMode = manager._viewMode == ViewMode.THIRD ? ViewMode.FIRST : ViewMode.THIRD;
|
||||
var cameraImage = changeViewBtn.transform.Find("Camera").gameObject;
|
||||
if (_viewMode == ViewMode.FIRST)
|
||||
if (manager._viewMode == ViewMode.FIRST)
|
||||
{
|
||||
currentPlayer.DOMoveZ(-0.09f, 0f);
|
||||
currentPlayer.DOMoveX(0f, 0f);
|
||||
currentPlayer.DOMoveZ(-0.1f, 0f);
|
||||
currentPlayer.DOMoveY(-0.85f, 0f);
|
||||
ftpPanel.SetActive(true);
|
||||
nearByScript.Hidehandler(null);
|
||||
rankingScript.Hidehandler(null);
|
||||
cameraImage.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
ftpPanel.SetActive(false);
|
||||
currentPlayer.DOMoveZ(4, 0f);
|
||||
currentPlayer.DOMoveY(-1f, 0f);
|
||||
nearByScript.Showhandler(null);
|
||||
rankingScript.Showhandler(null);
|
||||
cameraImage.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowResultPanel()
|
||||
|
||||
Reference in new issue
Block a user