Dev
-
PlayableAD & 제작 4Dev/Unity 2025. 9. 14. 19:32
한계치 분석 ( 박스 오브젝트 1000개 기준 )총 Triangles 939,586 / Vertices 1,618,676 / Draw Calls 1,370프레임 비중: Physics3D 56.7% / Rendering 40.1%, Avg frame time 14ms(≈71fps), RAM 116MB 2. 최적화 a.아이템에 그림자가 있어야 할까?그림자가 있으면 좋겠지만 그림자가 있고 없고의 성능 차이가 크다.Before (그림자 On)Draw Calls: 1,370Vertices: 1,618,676Triangles: 939,586Frame time: 14 ms (~71 fps)CPU: 81%, RAM: 116 MB프레임 비중: Physics3D 56.7%, Rendering 40.1% Afte..
-
PlayableAd & 제작 기초 3Dev/Unity 2025. 9. 13. 18:14
PlanarShadow 시스템 분석 🎯 시스템의 핵심 역할PlanarShadow는 3D 오브젝트의 평면 투영 그림자를 생성하는 시스템입니다. 실제 조명 계산 없이 기하학적 투영을 통해 그림자를 만들어내는 렌더링 솔루션입니다.📋 주요 구성 요소1. C# 스크립트 (PlanarShadow.cs)그림자 생성 및 제어 로직머티리얼 관리 시스템에디터 도구 제공실시간 오프셋 조정2. 셰이더 파일들PlanarShadow.shader: 실시간 동적 그림자용PlanarShadowBaked.shader: 베이크된 정적 그림자용⚙️ 작동 원리1. 그림자 투영 계산 (셰이더에서)**// 월드 좌표에서 그림자 위치 계산float4 vPosWorld = mul(unity_ObjectToWorld, v.vertex);float..
-
PlayableAd & 제작 2Dev/Unity 2025. 9. 12. 19:18
PathFinding 분석 요약핵심 특징:A 알고리즘* 기반 경로 탐색노드 연결 시스템 (시각적 에디터 지원)경로 캐싱 (성능 최적화)축 회전 제약 기능정적 API 설계 (싱글톤 패턴)핵심 기능 상세1. 기본 이동Pathfinding.MovePath( customerTransform, // 이동할 객체 counterPosition, // 목적지 2.0f, // 이동 속도 () => Debug.Log("도착!") // 완료 콜백);회전 제약Pathfinding.MovePath( playerTransform, targetPosition, speed, rotationSpeed, ELockAxisConstrain..
-
PlayableAd & 제작 1Dev/Unity 2025. 9. 11. 11:58
트러블 슈팅1. 돈 애니메이션 추적 시스템의 결함- PurchaseMoneyAnimationController의 RemoveCompletedAnimation() 메서드에서 _activeAnimations[i] == null 체크 방식이 정확하지 않음- 코루틴이 완료되어도 즉시 null이 되지 않아 정확한 추적이 불가능- 해결: 각 돈 오브젝트와 코루틴을 정확히 매핑하여 완료 시 확실히 제거, 구매 완료 시 남은 돈 애니메이션들을 제거1. Trigger이벤트로 감지할 때 같은 스크립트 사용했는데, 카운터만 상호작용이 안됨.- 증상: 동일한 StackInteractionController를 쓰는데도, BoxGenerator, TrashBin은 정상 작동, 카운터(Counter)만 플레이어와 상호작용이 안 됨..
-
유니티 Playworks 빌드 오류 해결 과정Dev/Unity 2025. 9. 8. 22:10
1. C# 문법 에러Playworks 빌드는 C# 7까지만 지원C# 9의 “타깃-타입 new(target-typed new)” 문법을 인식하지 못해서 new를 1개 요소짜리 튜플로 잘못 해석CS8124Tuple must contain at least two elements.private readonly List _availableIndices = new();-> private readonly List _availableIndices = new List();GameObject go = new("PoolManager");-> GameObject go = new GameObject("PoolManager"); C# 9의 target-typed conditional expression, 대입 대상의 타입을 보..
-
[Unity] 벽 관통 문제Dev/Unity 2025. 2. 12. 13:38
게임 개발 중 캐릭터가 벽을 관통하는 현상을 겪은 적이 있다. 이번 글에서는 Raycast를 활용하여 벽과의 충돌을 감지하고, 그에 따라 이동을 제한하는 방법을 소개한다. 먼저, 주요 함수들을 살펴보자.void StopAtWall(){ isBorder = Physics.Raycast(transform.position, transform.forward, 5, LayerMask.GetMask("Wall"));}void Move(){ ... if (!isBorder) transform.position += moveVec * moveSpeed * (walkDown ? 0.3f : 1f) * Time.deltaTime; ...}void FixedUpdate(){ ... ..
-
[Unity] 플레이어 자동 회전 문제Dev/Unity 2025. 2. 12. 13:30
게임 개발 중에, 아무 키도 누르지 않았는데 캐릭터가 자동으로 회전하는 현상이 발생했다. 문제 원인캐릭터의 Rigidbody가 외부 충돌로 인해 회전력을 받아서 문제가 발생했다.예를 들어, 총알 발사 구현 과정에서 탄피(BulletCase)가 캐릭터 위에 닿으면서, 의도치 않게 캐릭터가 회전하게 된 것이다. 해결 방법1. Layer Collision Matrix를 통한 충돌 제거Unity Project Settings > Physics 내의 Layer Collision Matrix에서 BulletCase와 Player 간의 충돌을 무시하도록 설정이렇게 하면 탄피가 캐릭터와 충돌하지 않아서 불필요한 회전이 발생하는 것을 근본적으로 차단할 수 있다. 2. Rigidbody 회전 제어 로직 추가Transfor..
-
[Unity] Layer Collision Matrix 적용 안될 때Dev/Unity 2025. 1. 23. 18:16
Player 피격 이벤트 구현 시 Player와 Enemy의 Layer Collision Matrix를 체크 해제 해도 충돌이 발생하는 경우가 있다. 문제 원인Player에 있는 Platform Effecter 2D의 "Use Collider Mask" 옵션이 켜져 있으면 Layer Collision Matrix와 독립적으로 작동하며, 충돌 레이어를 직접 제어할 수 있기 때문에 예상치 못한 충돌이 발생할 수 있다. Platform Effector 2D와 Use Collider MaskPlatform Effector 2D는 특정 물리적인 동작을 제어하는 컴포넌트로, 일반적으로 "일방 통행 플랫폼"을 구현할 때 사용된다.예: 아래에서 위로는 통과 가능하지만, 위에서 아래로는 충돌하는 플랫폼.Use Colli..