diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs index 2bb01e4e..622239c2 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BGManager.cs @@ -37,7 +37,7 @@ namespace MyGame.Scenes.MiniGame.Scripts bg.GetComponent()?.ResetFence(); } // フェンス確認 - if (fencePosList.Count > 0 && fencePosList[0] - targetXPos <= bgWidth) + if (fencePosList.Count > 0 && fencePosList[0] - targetXPos <= bgWidth * 1.5f) { SetFence(fencePosList[0]); fencePosList.RemoveAt(0); diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs index 05cfd567..e3e251ad 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/BackGround.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Linq; using UnityEngine; namespace MyGame.Scenes.MiniGame.Scripts @@ -10,6 +12,22 @@ namespace MyGame.Scenes.MiniGame.Scripts [SerializeField] private float fenceStep = 1.47f; [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++) + { + var newFenceMask = Instantiate(fenceMask, fenceMask.parent); + fenceMaskList.Add(newFenceMask); + } + } public void SetSky(ScrollGameDifficulty difficulty) { @@ -36,14 +54,18 @@ namespace MyGame.Scenes.MiniGame.Scripts public void SetFence(float xPos) { - fenceMask.gameObject.SetActive(true); var fenceRight = fence.transform.position.x + fence.size.x / 2; - fenceMask.SetPositionX(Mathf.CeilToInt((fenceRight - xPos) / fenceStep) * -fenceStep + fenceRight + maskOffset); + fenceMaskList[fenceMaskIndex].localScale = cacheFenceScale; + fenceMaskList[fenceMaskIndex].SetPositionX(Mathf.CeilToInt((fenceRight - xPos) / fenceStep) * -fenceStep + fenceRight + maskOffset); + fenceMaskIndex = (fenceMaskIndex + 1) % fenceMaskCount; } public void ResetFence() { - fenceMask.gameObject.SetActive(false); + foreach (var fm in fenceMaskList) + { + fm.SetLocalScale(0f); + } } } } \ No newline at end of file