diff --git a/Assets/01_Scenes/MyProject/GameScene.unity b/Assets/01_Scenes/MyProject/GameScene.unity index c921ed26..73988011 100644 --- a/Assets/01_Scenes/MyProject/GameScene.unity +++ b/Assets/01_Scenes/MyProject/GameScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:996e930bc5df230e49dd48bb05bb208be2456f5f1a92ec51d5e5064412018b8b -size 13286993 +oid sha256:b9ee07b4961584c758d3c0d9fd0b161ce3c3abbaa29d79f2268e3cdb40c6e4f9 +size 13287416 diff --git a/Assets/02_Scripts/Interact/BarcodeScaner.cs b/Assets/02_Scripts/Interact/BarcodeScaner.cs index 613bee7f..e1158d53 100644 --- a/Assets/02_Scripts/Interact/BarcodeScaner.cs +++ b/Assets/02_Scripts/Interact/BarcodeScaner.cs @@ -1,20 +1,15 @@ +using System.Collections.Generic; 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 Collider _scanAreaCollider; //스캔 이펙트 - [SerializeField] private GameObject _scanVisualEffect; + [SerializeField] private ParticleSystem _scanVisualEffect; //스캔 사운드 [SerializeField] private AudioSource _scanSoundEffect; @@ -22,28 +17,23 @@ public class BarcodeScaner : MonoBehaviour //체크아웃 정보 저장 객체 [SerializeField] private CheckoutMachine _checkoutMachine; - // 스캔영역을 스캔함 + private readonly Collider[] _overlapBuffer = new Collider[32]; + private readonly HashSet _scannedBuffer = new(); + + // 스캔영역 콜라이더 안에 들어온 아이템들을 스캔함 public void ScanArea() { - if (_scanDirection == null) return; + if (_scanAreaCollider == null) return; - ShowScanEffect(); + var bounds = _scanAreaCollider.bounds; + var count = Physics.OverlapBoxNonAlloc(bounds.center, bounds.extents, _overlapBuffer, Quaternion.identity); - 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)); + _scannedBuffer.Clear(); + for (int i = 0; i < count; i++) + { + var item = _overlapBuffer[i].GetComponentInParent(); + if (item != null && _scannedBuffer.Add(item)) ScanProduction(item); + } } //ItemInstance의 상품 정보를 스캔 @@ -52,6 +42,7 @@ public void ScanProduction(ItemInstance itemIns) //AddCheckoutSum으로 총 계산금액에 더함 _checkoutMachine.AddCheckoutSum(itemIns.ItemDataInfo.FinalPrice); + if (_scanVisualEffect != null) _scanVisualEffect.Play(); if (_scanSoundEffect != null) _scanSoundEffect.Play(); } diff --git a/Assets/03_Models/BarcodeScaner/Prefabs/BarcodeScaner.prefab b/Assets/03_Models/BarcodeScaner/Prefabs/BarcodeScaner.prefab index ebbe3070..14adb375 100644 --- a/Assets/03_Models/BarcodeScaner/Prefabs/BarcodeScaner.prefab +++ b/Assets/03_Models/BarcodeScaner/Prefabs/BarcodeScaner.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3df38db1a2d7a6423bdd598d098dca87ac12fba92a0a305514dd2daeb96e49f9 -size 21482 +oid sha256:55dea3d25df916d95bf0dcfbc1c0aa6ad513f98b01a007ee9f2aa369f06aaaf0 +size 25277 diff --git a/Assets/03_Models/BarcodeScaner/VisualEffect/ScanVisualEffect.prefab b/Assets/03_Models/BarcodeScaner/VisualEffect/ScanVisualEffect.prefab index 5674191f..d5b0d12c 100644 --- a/Assets/03_Models/BarcodeScaner/VisualEffect/ScanVisualEffect.prefab +++ b/Assets/03_Models/BarcodeScaner/VisualEffect/ScanVisualEffect.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7ae6bc3d6de327046fc153d3ac9521f6df7afd4e3606636f1665822af01faef8 +oid sha256:d17cb866b652aaa0279fe043c1b90a5326b662af2b55ee98c935033a8939a2d9 size 591241 diff --git a/Assets/03_Models/_Characters/Brown/Animations/AnimController_Brown.controller b/Assets/03_Models/_Characters/Brown/Animations/AnimController_Brown.controller index ddfb4723..1ca7472d 100644 --- a/Assets/03_Models/_Characters/Brown/Animations/AnimController_Brown.controller +++ b/Assets/03_Models/_Characters/Brown/Animations/AnimController_Brown.controller @@ -52,32 +52,6 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 ---- !u!1102 &-5966884987565979827 -AnimatorState: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Heel - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: [] - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 7400000, guid: eb9185d9382a3a64fbfa8a0ff68489a8, type: 2} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: --- !u!1101 &-328592594322388879 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -111,7 +85,13 @@ AnimatorController: m_PrefabAsset: {fileID: 0} m_Name: AnimController_Brown serializedVersion: 5 - m_AnimatorParameters: [] + m_AnimatorParameters: + - m_Name: Expression + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -125,18 +105,6 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} - - serializedVersion: 5 - m_Name: FootOverride - m_StateMachine: {fileID: 4760054131638637629} - m_Mask: {fileID: 0} - m_Motions: [] - m_Behaviours: [] - m_BlendingMode: 1 - m_SyncedLayerIndex: -1 - m_DefaultWeight: 1 - m_IKPass: 0 - m_SyncedLayerAffectsTiming: 0 - m_Controller: {fileID: 9100000} - serializedVersion: 5 m_Name: Face Layer m_StateMachine: {fileID: 6170660395283963564} @@ -175,28 +143,6 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: ---- !u!1107 &4760054131638637629 -AnimatorStateMachine: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: FootOverride - m_ChildStates: - - serializedVersion: 1 - m_State: {fileID: -5966884987565979827} - m_Position: {x: 10, y: 240, z: 0} - m_ChildStateMachines: [] - m_AnyStateTransitions: [] - m_EntryTransitions: [] - m_StateMachineTransitions: {} - m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 50, y: 20, z: 0} - m_EntryPosition: {x: 50, y: 120, z: 0} - m_ExitPosition: {x: 800, y: 120, z: 0} - m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} - m_DefaultState: {fileID: -5966884987565979827} --- !u!206 &5123552943827446111 BlendTree: m_ObjectHideFlags: 1 @@ -343,7 +289,7 @@ AnimatorStateMachine: m_ChildStates: - serializedVersion: 1 m_State: {fileID: -7836363615124988089} - m_Position: {x: 30, y: 260, z: 0} + m_Position: {x: 20, y: 260, z: 0} - serializedVersion: 1 m_State: {fileID: 6909750651427599640} m_Position: {x: 30, y: 190, z: 0} diff --git a/Assets/03_Models/_Characters/Brown/Brown.prefab b/Assets/03_Models/_Characters/Brown/Brown.prefab index 9235c236..81761935 100644 --- a/Assets/03_Models/_Characters/Brown/Brown.prefab +++ b/Assets/03_Models/_Characters/Brown/Brown.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad3f8e12a3b0bad0d2f325b9f13be5161ff832881cf822940b1bed645317a7ea -size 158962 +oid sha256:e3eda8b87e075836411aa7583dabaee13b365c97ea1b4f438a821638202cc344 +size 158918 diff --git a/Assets/03_Models/_Characters/Brown/Materials/Brown_0_Mat.mat b/Assets/03_Models/_Characters/Brown/Materials/Brown_0_Mat.mat index 123dd296..b0aa3ac1 100644 --- a/Assets/03_Models/_Characters/Brown/Materials/Brown_0_Mat.mat +++ b/Assets/03_Models/_Characters/Brown/Materials/Brown_0_Mat.mat @@ -49,7 +49,7 @@ Material: m_LightmapFlags: 0 m_EnableInstancingVariants: 1 m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 + m_CustomRenderQueue: 3000 stringTagMap: {} disabledShaderPasses: [] m_LockedProperties: