diff --git a/Assets/Models/ViewPlayer.controller b/Assets/Models/ViewPlayer.controller index 03fab547..4e34a6ec 100644 --- a/Assets/Models/ViewPlayer.controller +++ b/Assets/Models/ViewPlayer.controller @@ -259,7 +259,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: -2594306684932571358, guid: 8d6e0aea970462e4bb4b16046eb5c382, + m_Motion: {fileID: -4775950824883181381, guid: 114606f2cc62f834ca290cba3ca38cc6, type: 3} m_Tag: m_SpeedParameter: @@ -485,7 +485,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: 3214223272393166172, guid: 8d6e0aea970462e4bb4b16046eb5c382, + m_Motion: {fileID: -9103549811889136567, guid: 114606f2cc62f834ca290cba3ca38cc6, type: 3} m_Tag: m_SpeedParameter: @@ -571,7 +571,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: -2328498710462472863, guid: 8d6e0aea970462e4bb4b16046eb5c382, + m_Motion: {fileID: 1628252986623654205, guid: 114606f2cc62f834ca290cba3ca38cc6, type: 3} m_Tag: m_SpeedParameter: @@ -624,7 +624,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: 1827226128182048838, guid: 400110dd8ee017b43bacbba75163ad29, + m_Motion: {fileID: -4049585584969071195, guid: 114606f2cc62f834ca290cba3ca38cc6, type: 3} m_Tag: m_SpeedParameter: @@ -653,7 +653,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: 8337528576563664321, guid: 8d6e0aea970462e4bb4b16046eb5c382, + m_Motion: {fileID: 9001851194710065257, guid: 114606f2cc62f834ca290cba3ca38cc6, type: 3} m_Tag: m_SpeedParameter: @@ -704,7 +704,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: -5405653242291790180, guid: 8d6e0aea970462e4bb4b16046eb5c382, + m_Motion: {fileID: 1391355703288224117, guid: 114606f2cc62f834ca290cba3ca38cc6, type: 3} m_Tag: m_SpeedParameter: diff --git a/Assets/Resources/UI/direction.txt b/Assets/Resources/UI/direction.txt index 179fd21e..e7cca459 100644 --- a/Assets/Resources/UI/direction.txt +++ b/Assets/Resources/UI/direction.txt @@ -1,23 +1,14 @@ -380:5 -661:0 -909:-5 -1231:0 -1390:-5 -1597:0 -1756:-5 -1906:0 -2232:-5 -2471:0 -2961:-5 -3233:0 -3458:-5 -4258:0 -5367:5 -5484:0 -5799:5 -5965:0 -6379:5 -6644:0 -6980:5 -7705:0 - +347:-5 +693:0 +1040:-5 +1200:0 +1434:-5 +1483:0 +1679:5 +1816:0 +2097:5 +2322:0 +2544:-5 +2734:0 +3340:5 +3376:0 \ No newline at end of file diff --git a/Assets/Scenes/VideoPlay.unity b/Assets/Scenes/VideoPlay.unity index 333278e7..c930ac99 100644 --- a/Assets/Scenes/VideoPlay.unity +++ b/Assets/Scenes/VideoPlay.unity @@ -151,10 +151,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _mediaSource: 1 - _mediaReference: {fileID: 0} + _mediaReference: {fileID: 11400000, guid: 6270438318e8c9f4da5ff28f426d52ed, type: 2} _mediaPath: _pathType: 2 - _path: AVProVideoSamples/Chongqing Fengjie Zilian stage 7.mp4 + _path: AVProVideoSamples/12067924_720p.mp4 _fallbackMediaHints: transparency: 0 alphaPacking: 0 @@ -452,13 +452,13 @@ Light: m_InnerSpotAngle: 21.80208 m_CookieSize: 10 m_Shadows: - m_Type: 1 + m_Type: 2 m_Resolution: 2 m_CustomResolution: -1 - m_Strength: 1 + m_Strength: 0.8 m_Bias: 0 - m_NormalBias: 0.422 - m_NearPlane: 0.56 + m_NormalBias: 0 + m_NearPlane: 0.1 m_CullingMatrixOverride: e00: 1 e01: 0 @@ -639,6 +639,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: ticks: 0 + distance: 0 --- !u!54 &564530027 Rigidbody: m_ObjectHideFlags: 0 @@ -683,7 +684,7 @@ MeshCollider: m_GameObject: {fileID: 583583715} m_Material: {fileID: 0} m_IsTrigger: 0 - m_Enabled: 1 + m_Enabled: 0 serializedVersion: 4 m_Convex: 0 m_CookingOptions: 30 @@ -743,8 +744,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 583583715} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -10, z: 22} - m_LocalScale: {x: 22, y: 1, z: 22} + m_LocalPosition: {x: 0, y: -25, z: 22} + m_LocalScale: {x: 200, y: 1, z: 200} m_Children: [] m_Father: {fileID: 1870313947} m_RootOrder: 3 @@ -868,6 +869,99 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 755272044} m_CullTransparentMesh: 0 +--- !u!1 &816517650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 816517651} + - component: {fileID: 816517654} + - component: {fileID: 816517653} + - component: {fileID: 816517652} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &816517651 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816517650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 273, y: 0, z: 760} + m_LocalScale: {x: 22, y: 100, z: 22} + m_Children: [] + m_Father: {fileID: 1870313947} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &816517652 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816517650} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &816517653 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816517650} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: bc3a712fff1411b49b32b0fd3d4d25f0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &816517654 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816517650} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &860992837 GameObject: m_ObjectHideFlags: 0 @@ -1022,7 +1116,7 @@ RectTransform: - {fileID: 1297089527} - {fileID: 2017384698} m_Father: {fileID: 1870313947} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1567,7 +1661,7 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_RootOrder - value: 5 + value: 6 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} @@ -1642,7 +1736,7 @@ PrefabInstance: - target: {fileID: 919132149155446097, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_IsActive - value: 1 + value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} @@ -1671,6 +1765,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: ticks: 0 + distance: 0 --- !u!95 &1270643059 Animator: serializedVersion: 3 @@ -1837,7 +1932,7 @@ MeshCollider: m_GameObject: {fileID: 1299667690} m_Material: {fileID: 0} m_IsTrigger: 0 - m_Enabled: 1 + m_Enabled: 0 serializedVersion: 4 m_Convex: 0 m_CookingOptions: 30 @@ -1897,7 +1992,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1299667690} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 900} + m_LocalPosition: {x: 0, y: 0, z: 935} m_LocalScale: {x: 1920, y: 1080, z: 1} m_Children: [] m_Father: {fileID: 1870313947} @@ -2137,17 +2232,17 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_LocalScale.x - value: 3 + value: 20 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_LocalScale.y - value: 3 + value: 20 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_LocalScale.z - value: 3 + value: 20 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} @@ -2157,12 +2252,12 @@ PrefabInstance: - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_LocalPosition.y - value: -10 + value: -25 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} propertyPath: m_LocalPosition.z - value: 22 + value: 60 objectReference: {fileID: 0} - target: {fileID: -8679921383154817045, guid: 0f2ea8e54c2f1bf4f871020d54be0bda, type: 3} @@ -2448,6 +2543,7 @@ Transform: - {fileID: 1358457488} - {fileID: 1299667694} - {fileID: 583583719} + - {fileID: 816517651} - {fileID: 874107240} - {fileID: 1270643056} m_Father: {fileID: 0} diff --git a/Assets/Scripts/Scenes/VideoRide/AbstractVideoPlayer.cs b/Assets/Scripts/Scenes/VideoRide/AbstractVideoPlayer.cs index 060e70b2..4c81e560 100644 --- a/Assets/Scripts/Scenes/VideoRide/AbstractVideoPlayer.cs +++ b/Assets/Scripts/Scenes/VideoRide/AbstractVideoPlayer.cs @@ -22,7 +22,7 @@ namespace Assets.Scripts.Scenes.VideoRide protected double currentSlope; protected double nextSlope; protected double nextSlopeDistance; - protected double distance; + public double distance; protected double currentSlopeDistance; protected double lastEndDistance; protected double totalClimb; @@ -33,7 +33,8 @@ namespace Assets.Scripts.Scenes.VideoRide float timer = 1f; protected bool start = true; protected VideoGameManager manager { get; set; } - + Camera camera; + float currenPlayerHeight; protected virtual void Start() { animator = GetComponent(); @@ -41,9 +42,19 @@ namespace Assets.Scripts.Scenes.VideoRide mapData = manager.GetMapData(); ComputeNextSlope();//初始化坡度等 animator.Play("idle"); + camera = Camera.main; + + //注解1 + //得到模型原始高度 + float size_y = GetComponent().bounds.size.y; + //得到模型缩放比例 + float scal_y = transform.localScale.y; + //它们的乘积就是高度 + currenPlayerHeight = (size_y * scal_y); + } - void Update() + protected virtual void Update() { timer -= Time.deltaTime; ComputeAnimator();//控制动画 @@ -58,6 +69,7 @@ namespace Assets.Scripts.Scenes.VideoRide ComputePlayer();//计算人物属性 ComputeRecord(); ComputeVideo(); + ComputeRandom(); } timer += 1f; } @@ -67,8 +79,33 @@ namespace Assets.Scripts.Scenes.VideoRide speed = 0; Debug.Log(e.Message); } + + //获取player的position信息 + Vector3 pos = transform.position; + pos.y += 3f; + //射线碰撞物信息接收 + RaycastHit hit; + //第二种写法 + //我们可以先创建出一条射线 + Ray ray = new Ray(pos, new Vector3(0, -5, 22)); + //然后用这条射线去做射线检测 + //射线,输出碰撞体信息,射线长度,射线在那一层检测,射线不忽略开启触发器(istrigger)的碰撞体 + bool isHit = Physics.Raycast(ray, out hit, 15f, 1 << 0, QueryTriggerInteraction.Collide); + //在unity窗口画出射线 + Debug.DrawLine(pos, new Vector3(pos.x, pos.y, pos.z + 5), Color.red); + + if (isHit)//如果射线检测到物体 + { + //打印出被检测物体的名字 + print(hit.transform.name); + transform.DOLocalMoveX(-2, 1); + transform.DOLocalMoveZ(27, 1).onComplete+=()=>{ + transform.DOLocalMoveX(2, 1); + }; + } } } + //人物碰撞 void OnCollisionEnter(Collision collision) { @@ -82,6 +119,17 @@ namespace Assets.Scripts.Scenes.VideoRide } } } + void ComputeRandom() + { + var offset = 30; + if (ticks % 9 == 0) + transform.DOMoveZ(transform.position.z - offset, 1f); + if (ticks % 5 == 0) + transform.DOMoveZ(transform.position.z + offset, 2f); + + //人物的rotation y + transform.DOLocalRotate(new Vector3(0f, bearing, 0f), 1f); + } //动画状态机 void ComputeAnimator() { @@ -90,13 +138,26 @@ namespace Assets.Scripts.Scenes.VideoRide animator.SetFloat("preSpeed", (float)preSpeed); animator.SetFloat("speed", (float)speed); animator.SetFloat("grade", (float)currentSlope); - var currentFrame = manager.GetCurrentFrame() ?? 0; + var currentFrame = manager.GetCurrentFrame(); if (manager.mockDirection.ContainsKey(currentFrame)) { bearing = manager.mockDirection[currentFrame]; } animator.SetFloat("bearing", bearing); } + } + //人相对视频不距离不变。 其他人相对视频做前后位移 + //人与人之前前后距离按照射线检测 扇形射线 + //人与人左右距离按照碰撞检测 + //每个人都实时计算前后距离 + //其他玩家相对当前主人公做正向或者反向位移,左右 + protected virtual void ChangeToFirst() + { + transform.DOLocalMoveZ(-1, 1); + } + protected virtual void ChangeToThird() + { + transform.DOLocalMoveZ(55, 1); } //计算人物当前属性 protected abstract void ComputePlayer(); diff --git a/Assets/Scripts/Scenes/VideoRide/VideoGameManager.cs b/Assets/Scripts/Scenes/VideoRide/VideoGameManager.cs index 025205f3..052909b6 100644 --- a/Assets/Scripts/Scenes/VideoRide/VideoGameManager.cs +++ b/Assets/Scripts/Scenes/VideoRide/VideoGameManager.cs @@ -13,6 +13,8 @@ using System.Linq; using System.Threading.Tasks; using TurfCS; using UnityEngine; +using DG.Tweening; + namespace Assets.Scripts.Scenes.VideoRide { public class VideoGameManager : DeviceServiceMonoBase @@ -34,6 +36,7 @@ namespace Assets.Scripts.Scenes.VideoRide private double endDistance { get; set; } public Dictionary slots = new Dictionary(); + Transform cube; private async void Awake() { base.Awake(); @@ -49,9 +52,11 @@ namespace Assets.Scripts.Scenes.VideoRide MapUDPService.Init();//初始化TCP MockDirection(); InitSlots(); + } void Start() { + cube = transform.Find("Cube"); //获取媒体播放器 mediaPlayer = FindObjectOfType(); var mapApi = ConfigHelper.mapApi; @@ -88,6 +93,15 @@ namespace Assets.Scripts.Scenes.VideoRide cyclingController?.Run(null); var onlineRiders = cyclingController.riders; timer += 1f; + + } + var p = FindObjectOfType(); + if (p.distance > 0) + { + preFrame = currentFrame; + currentFrame = GetCurrentFrame(); + var dd = (currentFrame - preFrame) / 200f * cube.position.z; + cube.DOMoveZ((float)(cube.position.z - dd), 0f); } } private void InitSlots() @@ -195,10 +209,12 @@ namespace Assets.Scripts.Scenes.VideoRide { mediaPlayer?.Stop(); } + int preFrame = 0; + int currentFrame = 0; - public int? GetCurrentFrame() + public int GetCurrentFrame() { - return mediaPlayer?.Control.GetCurrentTimeFrames(); + return mediaPlayer.Control.GetCurrentTimeFrames(); } public void SetCurrentFrame(int seq) @@ -286,6 +302,10 @@ namespace Assets.Scripts.Scenes.VideoRide { return mapData; } + public float GetPlayRatio() + { + return mediaPlayer.Control.GetPlaybackRate(); + } public List getVideoPointList() { return videoPointList; diff --git a/Assets/Scripts/Scenes/VideoRide/VideoPlayer.cs b/Assets/Scripts/Scenes/VideoRide/VideoPlayer.cs index 78d4066d..6b256e07 100644 --- a/Assets/Scripts/Scenes/VideoRide/VideoPlayer.cs +++ b/Assets/Scripts/Scenes/VideoRide/VideoPlayer.cs @@ -12,6 +12,11 @@ namespace Assets.Scripts.Scenes.VideoRide base.Start(); animator.Play("idle"); } + + protected override void Update() + { + base.Update(); + } public void SetPower(double power) { this.power = power; @@ -47,6 +52,7 @@ namespace Assets.Scripts.Scenes.VideoRide speed = 0; distance = 0; } + } //控制视频播放速度 protected override void ComputeVideo()