diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity b/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity index e8238790..3c3e43f8 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/MiniGame.unity @@ -1571,7 +1571,6 @@ MonoBehaviour: - {fileID: 628830308} bgWidth: 17.6 bgOffset: 0 - holeWidth: 0 --- !u!114 &1657044091 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/BackGround.prefab b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/BackGround.prefab index 1cd4ea74..c3d63480 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/BackGround.prefab +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Prefabs/BackGround.prefab @@ -334,8 +334,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6158862371014298792} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 4.67, y: -1.24, z: 3.699627} - m_LocalScale: {x: 5.289047, y: 4.1330132, z: 1} + m_LocalPosition: {x: 6.8797, y: -0.797, z: 0} + m_LocalScale: {x: 0.89, y: 6, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6693468020679260201} @@ -402,8 +402,8 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 6693468020679260201} - - component: {fileID: 6693468020679260200} - component: {fileID: 3590064911546481895} + - component: {fileID: 7778908800215698483} m_Layer: 0 m_Name: BackGround m_TagString: Untagged @@ -433,58 +433,6 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &6693468020679260200 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6693468020679260202} - m_Enabled: 0 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - 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: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_Sprite: {fileID: 21300000, guid: a72d2b5d8cb90d149be2d15cc646011d, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 17.66, y: 22.08039} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 0 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 --- !u!114 &3590064911546481895 MonoBehaviour: m_ObjectHideFlags: 0 @@ -499,9 +447,21 @@ MonoBehaviour: m_EditorClassIdentifier: animator: {fileID: 1386453157335861444} fence: {fileID: 8185618443616999324} - fenceStep: 1.47 + fenceStep: 1.469 + fenceStep2: 0.898 fenceMask: {fileID: 1823092584949664508} - maskOffset: 0.38 + maskOffset: -0.02 +--- !u!210 &7778908800215698483 +SortingGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6693468020679260202} + m_Enabled: 1 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 --- !u!1 &6944257598449659502 GameObject: m_ObjectHideFlags: 0 @@ -628,8 +588,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8407122193597637346} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -8.527, y: -1.1916, z: 3.699627} - m_LocalScale: {x: 0.6368857, y: 42.292328, z: 1} + m_LocalPosition: {x: -8.76, y: -1.1916, z: 3.699627} + m_LocalScale: {x: 0.12635812, y: 42.292328, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6693468020679260201} @@ -675,7 +635,7 @@ SpriteRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingLayer: 0 - m_SortingOrder: 42 + m_SortingOrder: 2 m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3} m_Color: {r: 1, g: 1, b: 1, a: 1} diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs index 622239c2..6a652b99 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs @@ -10,9 +10,8 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private Transform[] bgArray; [SerializeField] private float bgWidth = 17.66f; [SerializeField] private float bgOffset = 0f; - [SerializeField] private float holeWidth; private int bgIndex = 0; - private readonly List fencePosList = new(); + private readonly List fencePosList = new(); public void ResetBg(float targetXPos) { @@ -37,21 +36,21 @@ namespace MyGame.Scenes.MiniGame.Scripts bg.GetComponent()?.ResetFence(); } // フェンス確認 - if (fencePosList.Count > 0 && fencePosList[0] - targetXPos <= bgWidth * 1.5f) + if (fencePosList.Count > 0 && fencePosList[0].x - targetXPos <= bgWidth * 1.5f) { SetFence(fencePosList[0]); fencePosList.RemoveAt(0); } } - public void SetFenceXPos(float targetXPos) => fencePosList.Add(targetXPos); + public void SetFenceXPos(Vector2 targetXPos) => fencePosList.Add(targetXPos); - private void SetFence(float xPos) + private void SetFence(Vector2 xPos) { foreach (var bg in bgArray) { var bgXPos = bg.transform.position.x; - if (xPos < bgXPos - bgWidth / 2 || bgXPos + bgWidth / 2 < xPos) + if (xPos.y < bgXPos - bgWidth / 2 || bgXPos + bgWidth / 2 < xPos.x) { continue; } diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs index e3e251ad..e2992e38 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs @@ -10,16 +10,15 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private Animator animator; [SerializeField] private SpriteRenderer fence; [SerializeField] private float fenceStep = 1.47f; + [SerializeField] private float fenceStep2 = .89f; [SerializeField] private Transform fenceMask; [SerializeField] private float maskOffset = .6f; private readonly List fenceMaskList = new(); private int fenceMaskCount = 3; private int fenceMaskIndex; - private Vector3 cacheFenceScale; private void Start() { - cacheFenceScale = fenceMask.localScale; fenceMaskList.Clear(); fenceMaskList.Add(fenceMask); for (int i = 0; i < fenceMaskCount - 1; i++) @@ -52,11 +51,35 @@ namespace MyGame.Scenes.MiniGame.Scripts } } - public void SetFence(float xPos) + public void SetFence(Vector2 xPos) { - var fenceRight = fence.transform.position.x + fence.size.x / 2; - fenceMaskList[fenceMaskIndex].localScale = cacheFenceScale; - fenceMaskList[fenceMaskIndex].SetPositionX(Mathf.CeilToInt((fenceRight - xPos) / fenceStep) * -fenceStep + fenceRight + maskOffset); + var fenceTransform = fence.transform; + var half = fence.size.x / 2 * fenceTransform.lossyScale.x; + var fenceRight = fenceTransform.position.x + half + maskOffset; + var fenceRight2 = fenceRight - fenceStep2; + var maskLeft = Mathf.CeilToInt((fenceRight2 - xPos.x) / fenceStep) * -fenceStep + fenceRight2; + var maskRight = Mathf.FloorToInt((fenceRight - xPos.y) / fenceStep) * -fenceStep + fenceRight; + foreach (var x in new []{xPos.x, xPos.y}) + { + var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); + sphere.GetComponent().material.color = Color.blue; + sphere.transform.SetLocalScale(.4f); + sphere.transform.SetPositionX(x); + sphere.transform.SetPositionZ(-5f); + } + foreach (var x in new []{maskLeft, maskRight}) + { + var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); + sphere.GetComponent().material.color = Color.red; + sphere.transform.SetLocalScale(.4f); + sphere.transform.SetPositionX(x); + sphere.transform.SetPositionZ(-5f); + } + + var maskWidth = maskRight - maskLeft; + var maskXPos = maskLeft + maskWidth / 2; + fenceMaskList[fenceMaskIndex].localScale += Vector3.right * maskWidth; + fenceMaskList[fenceMaskIndex].SetPositionX(maskXPos); fenceMaskIndex = (fenceMaskIndex + 1) % fenceMaskCount; } @@ -64,7 +87,24 @@ namespace MyGame.Scenes.MiniGame.Scripts { foreach (var fm in fenceMaskList) { - fm.SetLocalScale(0f); + fm.SetLocalScaleX(0f); + } + } + + private void OnDrawGizmosSelected() + { + var fenceTransform = fence.transform; + var distance = fenceTransform.position; + var half = fence.size.x / 2 * fenceTransform.lossyScale.x; + distance = distance.AddX(half); + distance = distance.AddX(maskOffset); + while (distance.x > fenceTransform.position.x - half) + { + Gizmos.color = Color.blue; + Gizmos.DrawLine(distance + Vector3.up, distance + Vector3.down); + Gizmos.color = Color.green; + Gizmos.DrawLine(distance.AddX(-fenceStep2) + Vector3.up, distance.AddX(-fenceStep2) + Vector3.down); + distance = distance.AddX(-fenceStep); } } } diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs index 408fe8a7..5dc652ed 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs @@ -22,8 +22,8 @@ namespace MyGame.Scenes.MiniGame.Scripts private float cacheElapsedTime; private ScrollGameStageData currentStageData; private ScrollGameStageData nextStageData; - public IObservable OnFence => fenceSubject.DelayFrame(1); // 1フレーム送らせて通知 - private readonly Subject fenceSubject = new(); + public IObservable OnFence => fenceSubject; + private readonly Subject fenceSubject = new(); private readonly CompositeDisposable stageDisposable = new(); private readonly Dictionary stageDataDict = new(); @@ -106,13 +106,13 @@ namespace MyGame.Scenes.MiniGame.Scripts }).AddTo(stage.gameObject); // 落とし穴があった場合通知 - stage.transform.FindAllChildrensComponent(x => + stage.transform.FindAllChildrensComponent(x => { - if (!x.gameObject.activeInHierarchy || x.ItemType != StageItem.Type.Hole) + if (!x.gameObject.activeInHierarchy) { return; } - fenceSubject.OnNext(x.transform.position.x); + fenceSubject.OnNext(x.Border); }); } }