using Framework.Manager; using Gameplay.Manager; using UnityEngine; using PhxhSDK; namespace Gameplay.Level { public class DestroyPlank : MonoBehaviour { private GameObject _gfxFirework; private ParticleSystem _particleSystem; private float _limitPosX; private void Awake() { var mainCamera = CameraManager.Instance.MainCamera; var worldWidth = mainCamera.ScreenToWorldPoint(new Vector3(Screen.width, 0f, 0f)).x - mainCamera.ScreenToWorldPoint(Vector3.zero).x; _limitPosX = worldWidth / 2; _gfxFirework = gameObject.transform.Find("gfx_plank_firework").gameObject; _particleSystem = _gfxFirework.GetComponent(); } private void OnCollisionEnter2D(Collision2D collision) { LevelManager.Instance.CachePlank(collision.gameObject.name); var plank = collision.gameObject; var plankPosX = plank.transform.position.x; var realX = plankPosX > -_limitPosX && plankPosX < _limitPosX ? plankPosX : plankPosX > 0 ? _limitPosX : -_limitPosX; var oldGfxPos = _gfxFirework.transform.position; var newGfxPos = new Vector3(realX, oldGfxPos.y, oldGfxPos.z); _gfxFirework.transform.position = newGfxPos; _gfxFirework.gameObject.SetActive(true); GfxManager.Instance.ShowGfxOnce(_particleSystem, _gfxFirework); AudioManager.Instance.PlaySound(AudioType.SOUND, "S_PlankDrop", new UnityAudio(false)); } } }