61 lines
1.6 KiB
C#
61 lines
1.6 KiB
C#
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<ItemInstance>();
|
|
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();
|
|
}
|
|
|
|
|
|
|
|
}
|