본문 바로가기

전체 글594

유니티 ObstacleManager(장애물관리) ▣ 코드 설명 ObstacleManager 클래스장애물의 다양한 동작을 관리합니다. 장애물의 타입에 따라 이동, 회전, 가시성 제어를 수행합니다.enum ObstacleType장애물의 타입을 나타내며, 장애물이 이동, 회전, 가시성 제어, 발판으로 동작할 수 있도록 구분합니다.HandleMovement()장애물이 경로 지점을 따라 이동합니다. Vector3.MoveTowards()를 사용해 부드럽게 이동합니다.HandleRotation()지정된 축을 기준으로 회전합니다.HandleVisibility()Renderer의 enabled 속성을 통해 가시성을 제어합니다.OnCollisionEnter()플레이어와 충돌 시 호출됩니다. 충돌한 객체의 Tag가 "Player"인 경우 장애물의 타입에 따라 동작을 수.. 2024. 10. 15.
유니티 Player Fall GameOver ▣ 코드 설명떨어짐 감지:transform.position.y 값을 모니터링하여 fallThreshold (예: -10f)보다 작아지면 캐릭터가 떨어졌다고 간주합니다.게임 오버 처리:캐릭터가 떨어지면 GameOver() 함수가 호출됩니다. 게임 오버 상태를 추적하기 위해 isGameOver 변수를 사용합니다.게임 재시작:Invoke()를 사용해 2초 후에 현재 씬을 다시 로드합니다. SceneManager.LoadScene()를 통해 현재 활성화된 씬을 재시작합니다. 2024. 10. 15.
유니티 Player Die Ragdoll모드 ▣ Root (Hips):캐릭터의 중심이 되는 pelvis를 사용합니다. 이 본은 상체와 하체를 연결하는 중심입니다.Left Hips / Right Hips:왼쪽과 오른쪽 다리의 상단 부분에 해당하는 thigh_l 및 thigh_r를 사용합니다. 이 본들은 다리의 시작점이며 관절의 중요한 부분입니다.Left Knee / Right Knee:무릎에 해당하는 본으로 calf_l와 calf_r를 사용합니다. 이 본들은 허벅지와 종아리를 이어주는 역할을 합니다.Left Arm / Right Arm:왼팔과 오른팔의 상단에 해당하는 upperarm_l 및 upperarm_r를 사용합니다.Left Elbow / Right Elbow:팔꿈치 부분으로 lowerarm_l 및 lowerarm_r를 사용합니다.Middle .. 2024. 10. 14.
유니티 Jumping ▣ 코드 설명LayerMask groundLayer:캐릭터가 닿을 수 있는 땅의 레이어를 지정합니다. Unity에서 레이어는 충돌 처리를 위한 그룹을 나눌 때 사용됩니다. groundLayer는 땅으로 간주할 레이어를 선택할 수 있도록 합니다.CheckIfGrounded() 함수:Raycast를 이용하여 캐릭터의 발 밑에 땅이 있는지 확인하는 함수입니다. Raycast는 캐릭터의 위치에서 아래쪽으로 발사되며, groundLayer에 속한 오브젝트와 충돌하는지 여부를 확인합니다.중력 적용 및 이동 처리:캐릭터가 공중에 있으면 중력이 지속적으로 적용되어 아래로 내려오게 되고, 착지했을 때는 중력에 의해 속도가 과도하게 증가하는 것을 막기 위해 velocity.y = -2f로 설정됩니다. controller... 2024. 10. 12.
유니티 Aim 상체 회전(애니메이션 상체 방향 문제) ▣ 코드 설명:LateUpdate() 함수는 모든 애니메이션이 적용된 후 마지막에 호출되기 때문에, 애니메이션으로 덮어쓰기 전에 상체 회전값을 강제로 덮어쓸 수 있습니다. Aim 모드일 때만 upperBody.localRotation 값을 수정하고, Aim 모드가 끝나면 원래 회전 값으로 복구합니다. 2024. 10. 11.
유니티 FogEffect ▣ 안개 효과 설정 방법 Unity 메뉴에서 설정하기: 안개 효과는 Lighting 설정 창에서 활성화할 수 있습니다.Window > Rendering > Lighting 메뉴로 들어갑니다. Scene 탭에서 Environment 섹션을 찾고, Fog 항목을 활성화합니다.   ▣ 코드 설명 RenderSettings.fog = true;: 안개 효과를 활성화합니다.RenderSettings.fogColor = Color.gray;: 안개의 색상을 설정합니다. 이 예시에서는 회색을 사용했습니다.RenderSettings.fogDensity = 0.02f;: 안개의 밀도를 설정합니다. 값이 클수록 안개가 짙어집니다.RenderSettings.fogStartDistance = 10f;, RenderSettin.. 2024. 10. 11.
언리얼엔진5 c++ Actor 이름 추출 ▣ GetName() 메서드를 사용하여 Hit.GetActor()의 이름을 가져올 때 이름 뒤에 붙는 "_C_1"와 같은 접미사는Unreal Engine에서 블루프린트 클래스나 인스턴스화된 객체를 나타낼 때 종종 추가됩니다.이 접미사는 Unreal의 객체 관리 시스템에서 객체가 어떤 클래스에서 파생되었는지와 고유한 인스턴스임을 식별하기 위해 자동으로 붙는 것입니다. 예를 들어, 블루프린트로 생성된 액터나 객체는 기본적으로 Unreal의 객체 시스템에서 다음과 같은 형식으로 이름이 변경됩니다: Beteta_C_1 Glock_C_1여기서:"_C": 블루프린트 클래스의 객체임을 나타냅니다. "_1": 해당 클래스의 첫 번째 인스턴스를 나타냅니다. 만약 여러 인스턴스가 있다면 뒤에 숫자가 증가합니다.  ▣  C.. 2024. 10. 11.
유니티 프로젝트 템플릿 메뉴 ▣ 2D (Built-In Render Pipeline) 설명: 이 템플릿은 기본 렌더 파이프라인을 사용하는 2D 게임 제작을 위한 템플릿입니다. 2D Sprite 작업 및 2D 물리 엔진을 쉽게 활용할 수 있습니다. 사용 예: 횡스크롤 액션 게임, 퍼즐 게임 등 2D 기반 게임 제작.▣  3D (Built-In Render Pipeline) 설명: 기본 렌더 파이프라인을 사용하는 3D 게임 프로젝트 템플릿입니다. Unity의 기본 3D 기능을 활용하여 모델링, 텍스처링, 조명 등을 설정할 수 있습니다. 사용 예: 간단한 3D 게임이나 시뮬레이션 제작에 적합.▣ Universal 2D 설명: SRP(Scriptable Render Pipeline)를 사용하는 2D 프로젝트 템플릿입니다. SRP는 성능 최.. 2024. 10. 10.
유니티 슬로우 모드 ▣ 코드 설명 slowMotionScale: 슬로우 모드에서 적용할 시간 비율입니다. 예를 들어 0.5로 설정하면 게임 속도가 절반으로 느려집니다.defaultTimeScale: 기본 게임 속도입니다. 보통은 1로 설정합니다.isSlowMotion: 현재 슬로우 모드인지 여부를 저장하는 불리언 변수입니다.Input.GetKeyDown(KeyCode.Q): Q 키가 눌렸을 때 슬로우 모드를 토글(toggle)합니다.Time.timeScale: 게임의 시간 속도를 조정하는 핵심 변수입니다. 1은 정상 속도, 0.5는 절반 속도를 의미합니다.Time.fixedDeltaTime: 물리 계산에서 사용하는 시간 델타 값을 조정하여, 슬로우 모드에서도 물리 연산이 부드럽게 유지되도록 합니다.  ▣ Time.fixed.. 2024. 10. 10.
유니티 Material Tiling ▣ Import Settings1. Texture Type: Default Default: 기본적으로 사용할 텍스처의 유형을 지정합니다. 주로 3D 모델에 사용하는 일반적인 텍스처에 대해 설정합니다. 만약 다른 유형(예: Normal Map, Sprite 등)을 사용할 경우 여기서 변경합니다.Normal Map: 3D 모델의 표면 질감을 표현하는 텍스처로, 빛의 반사를 통해 사실적인 표면을 구현합니다. Editor GUI and Legacy GUI: 유니티 에디터 내의 GUI에 사용되는 텍스처입니다. Sprite (2D and UI): 2D 게임 및 UI 요소에서 사용되는 텍스처입니다. Cursor: 커서 이미지로 사용될 텍스처입니다. Cookie: 라이트 쿠키로 사용되는 텍스처입니다. 조명에서 특정 패.. 2024. 10. 10.
유니티 AI 상태 코드 ▣ 코드 설명 MonsterState 열거형(enum):몬스터의 상태를 열거형으로 정의하여, 순찰, 추적, 공격, 도망, 대기, 죽음 등의 상태를 관리합니다.Update() 함수:Update() 함수에서 상태에 따라 적절한 동작을 수행합니다. 각 상태에 해당하는 함수를 호출하고, 일정한 조건을 만족하면 상태 전환을 처리합니다.상태 전환 처리:TransitionState() 코루틴 함수가 상태 전환을 처리하며, 각 상태 후 지정된 대기 시간 동안 몬스터가 다른 동작을 하지 않도록 합니다.각 상태 함수:Patrol(): 몬스터가 순찰 경로를 따라 이동합니다. Chase(): 타겟(플레이어)을 추적합니다. Attack(): 타겟을 공격합니다. Evade(): 타겟으로부터 도망칩니다. Idle(): 일정 시간 .. 2024. 10. 4.
유니티 3D Weapon Fire(RayCast, 반동, 쉐이크) ▣ 카메라 쉐이크(Camera Shake) 기능 설명: 총을 발사할 때 카메라가 일시적으로 흔들리면서 강렬한 반동 효과를 제공하는 기능입니다. 카메라의 월드 좌표계를 기준으로 카메라를 무작위로 흔들고, 흔들림이 끝난 후 원래 위치로 복구하는 방식입니다. 동작: 카메라의 원래 위치를 저장하고, 무작위로 X, Y 축 방향에 작은 오프셋을 더해 흔들린 효과를 줍니다. 시간이 지나면 카메라를 원래 위치로 복구합니다. 코드 구조: StartCameraShake(): 카메라 쉐이크를 시작하는 함수로, 기존 쉐이크 코루틴이 진행 중이면 중지하고 새로운 코루틴을 시작합니다. CameraShake(float duration, float magnitude): 일정 시간 동안 카메라에 무작위 흔들림을 적용하는 코루틴입니다... 2024. 10. 3.
유니티 3D 아이템 감지(BoxCast) ▣ 코드 설명 boxSize: BoxCast의 크기를 정의하는 변수로, Vector3 타입으로 x, y, z 축에서 박스의 크기를 설정합니다. 박스의 절반 크기를 사용하여 충돌 감지를 수행합니다.예: new Vector3(1f, 1f, 1f)는 1x1x1 크기의 박스를 의미합니다. castDistance: BoxCast가 얼마나 멀리 감지할지를 결정하는 거리 값입니다. 박스가 이 거리만큼 직선으로 나아가며 충돌을 감지합니다. itemLayer: 감지할 대상의 레이어를 설정하기 위한 변수입니다. 특정 레이어에 속한 오브젝트들만 감지하려면 이 값을 설정합니다.예: 아이템 레이어를 설정해 불필요한 오브젝트와의 충돌을 무시할 수 있습니다.debugDuration: 디버그 라인이 화면에 얼마나 오래 보일 지를 설.. 2024. 10. 2.
유니티 Build Setting ▣ 플랫폼 설정 (PC, Mac & Linux Standalone 선택) 먼저, 프로젝트가 PC용으로 빌드되도록 설정해야 합니다. 이 작업을 수행하려면 다음 단계를 따릅니다.File > Build Settings 메뉴를 엽니다. Platform 목록에서 "PC, Mac & Linux Standalone"을 선택합니다. "Platform" 아래에서 "Target Platform"을 Windows로 설정합니다. Switch Platform 버튼을 클릭하여 플랫폼을 전환합니다. 이제 PC 플랫폼으로 빌드할 준비가 되었습니다. ▣ Build Settings에서 Windows 플랫폼을 선택할 때 나타나는 다양한 옵션들, 특히 Architecture, Copy PDB files와 같은 옵션들은 게임 빌드 시 중요한.. 2024. 10. 2.
언리얼엔진5 c++ 카메라 상하 이동(총기 반동) ▣ AddPitchInput(float Val) 설명: 카메라의 피치(Pitch)를 조정하는 함수로, 카메라를 상하로 움직입니다. 입력 값(Val)이 양수이면 카메라가 아래로 향하고, 음수이면 위로 향하게 됩니다. 1인칭 게임에서는 위아래 시점 조절, 3인칭 게임에서는 카메라 높이 조절로 사용됩니다. API :https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/GameFramework/APlayerController/AddPitchInput/  ▣ AddYawInput(float Val) 설명: 카메라의 야우(Yaw)를 조정하는 함수로, 카메라를 좌우로 회전시킵니다. 입력 값(Val)이 양수이면 카메라가 오른쪽으로 회전하고, 음수이면 왼쪽으로 회전합니.. 2024. 10. 1.
유니티 Avatar Make 활용 조준, 발사 애니 재생 ▣ Animation Type (애니메이션 타입) None: 애니메이션이 없는 경우입니다. 캐릭터를 애니메이션 없이 사용할 때 선택합니다. Legacy: 이전에 사용하던 애니메이션 시스템입니다. Unity 3.x 버전까지 사용되었으며, 일반적으로 새로운 프로젝트에서는 사용하지 않습니다. Generic: 기본 애니메이션 타입입니다. 비 인간형 캐릭터(동물, 로봇 등)의 애니메이션에 적합합니다. Mixamo의 캐릭터는 주로 인간형이므로 이 타입은 잘 사용되지 않습니다. Humanoid: 인간형 캐릭터를 위한 애니메이션 타입입니다. Mixamo 캐릭터는 대부분 Humanoid 리그로 설정해야 합니다. 이 옵션을 사용하면 Unity에서 제공하는 Avatar 시스템을 사용해 캐릭터의 애니메이션을 제어할 수 있습니.. 2024. 10. 1.
유니티 3D Aim Animation Rigging ▣ Animation Rigging은 Unity에서 제공하는 강력한 기능으로, 캐릭터 애니메이션에 다양한 제약(Constraints)을 추가하여 더 정밀하게 제어하고 상호작용할 수 있게 해주는 시스템입니다. 이 기능은 캐릭터가 게임 내에서 동적으로 환경과 상호작용하거나, 애니메이션 도중 실시간으로 목표를 향해 움직이는 등의 동작을 가능하게 합니다.  ▣ Rig Builder Rig Builder는 Unity의 Animation Rigging 시스템에서 다양한 리깅 설정을 캐릭터에 적용하기 위한 핵심 컴포넌트입니다. 이 컴포넌트는 캐릭터에 다양한 리그(Rig)를 적용하고, 이를 통해 캐릭터의 애니메이션에 제약을 설정할 수 있도록 도와줍니다. Rig Builder는 여러 Rig를 관리하고, 이들이 캐릭터 애.. 2024. 9. 30.
유니티 2D AI 순찰, 공격, 도망, 랜덤이동 시스템 ▣ 코드 설명 patrolPoints: AI가 순찰할 경로의 지점들을 배열로 설정합니다. currentPoint: 현재 AI가 향하고 있는 순찰 지점의 인덱스입니다. 모든 순찰 지점을 순서대로 이동하며, 마지막 지점에 도달하면 다시 처음으로 돌아갑니다.    ▣ 코드 설명 attackRange: AI가 플레이어를 공격할 수 있는 최대 거리입니다. attackCooldown: AI가 공격 후 다시 공격하기까지의 시간입니다. Attack(): 플레이어를 공격할 때 실행되는 함수입니다.   ▣ 코드 설명 evadeRange: 플레이어가 이 범위 안으로 들어오면 AI가 도망가기 시작합니다. direction: AI가 플레이어의 반대 방향으로 이동합니다.    ▣ 코드 설명 SetRandomDirection():.. 2024. 9. 30.
유니티 Movement 애니메이션(걷기, 뛰기) ▣ 애니메이터(Animator) 설정Step 1: Animator에서 Blend Tree 만들기 Animator Controller를 생성하고, 캐릭터에 추가합니다. Base Layer에서 상태(State)를 하나 추가한 후, 그 상태를 Blend Tree로 변경합니다. Blend Tree를 선택한 후, Blend Tree에서 파라미터를 사용해 애니메이션을 제어합니다. 파라미터로는 Horizontal(A, D 키)과 Vertical(W, S 키)를 사용합니다.Step 2: Blend Tree에 애니메이션 추가 Blend Type을 2D Simple Directional로 설정합니다. 각각의 방향에 따른 애니메이션 클립을 Blend Tree에 추가합니다. 예를 들어, W 키로 앞으로 이동할 때는 Forwa.. 2024. 9. 28.
유니티 Character Controller 바닥 충돌 ▣ Editor에서 Character Controller 컴포넌트의 Skin Width 값을 수정할 수 있습니다. ▣ 코드에서도 CharacterController.skinWidth 속성을 수정하여 설정할 수 있습니다.  ▣ Skin Width는 Character Controller가 충돌 감지를 처리할 때 매우 중요한 속성입니다.이 값은 캐릭터가 벽이나 장애물과 너무 가까이 있을 때 발생할 수 있는 작은 충돌 문제를 방지하는 데 도움을 줍니다.예를 들어, 캐릭터가 작은 오브젝트에 부딪혔을 때, 그 오브젝트를 무시하고 계속 이동할 수 있게 해 줍니다.일반적으로 너무 작은 값으로 설정하면 캐릭터가 충돌에 끼이는 현상이 발생할 수 있고, 너무 큰 값으로 설정하면 캐릭터가 벽에 붙지 않고 멀리 떨어지는 문제가.. 2024. 9. 28.
유니티 2D ParticleManager (파티클 프리팹으로 관리) ▣ ParticleManager 코드 설명 ParticleManager는 싱글톤 패턴을 사용하여 어디서든 접근 가능하게 만들고, 이름으로 파티클을 선택하여 원하는 위치에서 애니메이션을 재생하고 파티클을 관리하는 클래스입니다. ▣ 주요 기능 설명 싱글톤 패턴 구현:public static ParticleManager Instance { get; private set; }로 싱글톤 인스턴스를 생성하여 어디서든 ParticleManager.Instance를 통해 접근할 수 있게 합니다. Awake()에서 싱글톤 인스턴스를 초기화하며, 이미 인스턴스가 존재할 경우 중복되는 오브젝트를 파괴합니다. DontDestroyOnLoad(gameObject)로 씬이 전환되더라도 ParticleManager가 파괴되지 않도.. 2024. 9. 27.
언리얼엔진5 c++ Widget Image Chanage ▣  헤더 파일 추가 (#include "Components/Image.h") UImage를 사용하기 위해 Components/Image.h 헤더를 추가합니다. 이 헤더에는 이미지 위젯과 관련된 모든 함수 및 클래스가 정의되어 있습니다. ▣  조건 체크 및 초기화 if (Animinstance->IsGetWeapon && Animinstance->WeaponType != 3): 플레이어가 무기를 장착하고 있고, 무기의 종류가 특정 타입(3번 타입)이 아닌 경우 조준 상태로 변경하는 조건입니다. if (HUDClass == nullptr): HUDClass가 아직 로드되지 않은 상태라면, LoadClass를 사용해 블루프린트 위젯 클래스를 로드합니다. TEXT("/Game/UMG/WB_HUD.WB_HUD_.. 2024. 9. 27.
유니티 UI (Hp Slider, Text) ▣ 코드 설명 이 코드는 PlayerManager 클래스에서 플레이어의 체력과 점수를 관리하고, 점수 증가 시 점수 텍스트 색상을 빨간색으로 잠시 변경한 뒤 원래 색상으로 되돌리는 기능을 제공합니다. 코루틴을 사용하여 점수 텍스트 색상이 변경되는 동작을 비동기적으로 처리합니다. ▣ 변수 설명 public Slider hpSlider;HP 슬라이더를 연결하는 변수로, 플레이어의 체력을 시각적으로 표현하는 UI 요소입니다.public int maxHp = 100;플레이어의 최대 체력을 설정합니다.private int currentHp;현재 체력을 저장하는 변수입니다.public Image fillImage;슬라이더의 Fill 오브젝트(HP 바의 채워지는 부분)의 이미지를 참조하기 위한 변수입니다.public.. 2024. 9. 26.
유니티 2D RayCast활용 아이템획득 ▣ 코드 내 주요 함수 및 개념 설명: Input.GetKeyDown(KeyCode.E):E 키가 눌렸을 때 실행되는 조건입니다. 이 조건을 만족하면 그 아래의 코드를 실행합니다. KeyCode.E는 E 키를 나타내며, 키 입력을 감지하는 데 사용됩니다. ▣ Debug.DrawLine():화면에 선을 그려주는 디버그용 함수입니다. 여기서는 플레이어의 위치에서 오른쪽으로 1 단위 거리만큼 빨간색 선을 그려줍니다. 이 선은 Raycast의 탐지 범위를 시각적으로 보여주기 위한 용도로 사용됩니다. 게임 중 1초 동안 선이 표시됩니다.▣ Physics2D.Raycast():플레이어 위치에서 오른쪽으로 Raycast를 쏘아 weaponMake 레이어에 속한 오브젝트를 탐지하는 함수입니다. RaycastHit2D .. 2024. 9. 25.