Forest_Client/Forest/Assets/Scripts/Gameplay/Level/DestroyPlank.cs

46 lines
1.6 KiB
C#
Raw Normal View History

2024-06-12 15:01:54 +08:00
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<ParticleSystem>();
}
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));
}
}
}