using UnityEngine; using VRShopping.Interact; using VRShopping.Items; public class BarcodeScaner : MonoBehaviour { //스캔 원점 및 방향 [SerializeField] private Transform _scanDirection; //스캔 거리 [SerializeField] private float _scanDistance; //스캔 반지름 [SerializeField] private float _scanRadius; //스캔 이펙트 [SerializeField] private GameObject _scanVisualEffect; //스캔 사운드 [SerializeField] private AudioSource _scanSoundEffect; //체크아웃 정보 저장 객체 [SerializeField] private CheckoutMachine _checkoutMachine; // 스캔영역을 스캔함 public void ScanArea() { if (_scanDirection == null) return; ShowScanEffect(); var origin = _scanDirection.position; var direction = _scanDirection.forward; if (!Physics.SphereCast(origin, _scanRadius, direction, out var hit, _scanDistance)) return; var item = hit.collider.GetComponentInParent(); if (item != null) ScanProduction(item); } private void ShowScanEffect() { if (_scanVisualEffect == null) return; _scanVisualEffect.SetActive(true); _ = Util.RunDelayed(0.3f, () => _scanVisualEffect.SetActive(false)); } //ItemInstance의 상품 정보를 스캔 public void ScanProduction(ItemInstance itemIns) { //AddCheckoutSum으로 총 계산금액에 더함 _checkoutMachine.AddCheckoutSum(itemIns.ItemDataInfo.FinalPrice); if (_scanSoundEffect != null) _scanSoundEffect.Play(); } }