본문 바로가기

[ Unity ]124

유니티 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.
유니티 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.
유니티 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.
유니티 2D RayCast, ShotGun RayCast ▣ 코드설명: Update에서 rayDirection을 업데이트:Update 함수에서 mousePosition과 rayDirection을 매 프레임마다 업데이트하도록 했습니다. 마우스의 위치를 기준으로 총구(bulletPos)에서 마우스 방향으로의 벡터를 계산하여 저장합니다.총구 회전 로직:마우스 위치에 따라 총구가 회전하도록 rotationZ을 계산하여 transform.rotation에 적용했습니다. 이제 총구가 마우스를 향하게 됩니다.디버그 시각화:Debug.DrawRay로 레이캐스트를 시각적으로 확인할 수 있도록 했습니다. 레이캐스트가 마우스 방향으로 올바르게 나가는지 확인할 수 있습니다.     ▣ 코드설명:샷건 발사 구현:pelletCount: 샷건 발사 시 나가는 탄환의 개수를 의미합니다. .. 2024. 9. 24.
유니티 Scene FadeIn FadeOut ▣ SceneManager.LoadScene:지정한 씬을 로드하는 함수입니다. 이 코드를 통해 nextSceneName 변수에 저장된 씬을 로드합니다. Image.color:Image 컴포넌트의 색상을 설정하거나 가져오는 속성입니다. 색상값을 조정하여 알파(투명도)를 조절할 수 있습니다. Mathf.Lerp:두 값 사이를 선형적으로 보간하는 함수입니다. 주어진 시간에 따라 startAlpha에서 endAlpha로 값이 부드럽게 변하게 합니다.  ▣ Player 및 Scene을 로드하는 스크립트 싱글톤으로 작성 후 상속한 다음 씬을 활성화 및 사운드 재생하는 코드 추가  https://docs.unity3d.com/ScriptReference/SceneManagement.SceneManager.LoadSc.. 2024. 9. 24.
유니티 애니메이션 이벤트 ▣ 유니티에서 애니메이션 이벤트(Animation Events)는 애니메이션 클립이 재생되는 도중 특정 타이밍에 메소드 호출이 필요할 때 사용됩니다. 이를 통해 애니메이션 클립 중간에 원하는 기능을 실행할 수 있습니다. 예를 들어, 캐릭터가 점프하는 애니메이션 중 발이 땅에 닿는 순간 소리를 재생하거나, 적이 공격하는 애니메이션의 특정 타이밍에 데미지를 줄 수 있습니다. ▣ 애니메이션 이벤트는 해당 오브젝트에 있는 스크립트에 있는 함수만 호출가능합니다.  https://docs.unity3d.com/ScriptReference/AnimationEvent.html Unity - Scripting API: AnimationEventAnimation events support functions that tak.. 2024. 9. 23.
유니티 애니메이션 (애니 레이어 상태, 애니 속도, 재생중 애니 이름, 애니 진행시간) ▣ animator.speed 설명: animator.speed는 Animator 컴포넌트가 재생하는 모든 애니메이션의 속도를 제어하는 프로퍼티입니다. 기본값은 1.0f이며, 이는 정상 속도를 의미합니다. 0.5f로 설정하면 애니메이션 속도가 절반으로 느려지고, 2.0f로 설정하면 두 배로 빨라집니다. 이 값은 Animator 전체의 재생 속도를 조절하며, 개별 애니메이션 클립에 적용되는 것이 아니라 Animator에 연결된 모든 클립에 적용됩니다. ▣  animator.GetCurrentAnimatorStateInfo(0) 설명: GetCurrentAnimatorStateInfo(int layerIndex)는 Animator에서 특정 레이어에 대한 현재 애니메이션 상태 정보를 반환하는 메서드입니다. l.. 2024. 9. 23.
유니티 3D 카메라 3인칭, 1인칭 Player 이동 Mode ▣ 핵심 함수 설명: Start 함수게임 시작 시 호출되는 함수로, 초기 설정을 담당합니다. Cursor.lockState로 마우스 커서를 화면 안에 고정하고, 카메라의 기본 거리와 시야각을 설정합니다. 카메라의 초기 위치를 업데이트하기 위해 UpdateCameraPosition을 호출합니다.Update 함수매 프레임마다 호출되어 사용자의 입력을 처리합니다. 마우스 움직임에 따른 카메라 회전, 1인칭/3인칭 모드 전환, 점프, 카메라 줌(마우스 우클릭) 등을 제어합니다. 우클릭을 통해 카메라 확대/축소를 처리하고, 이를 위해 각각의 코루틴(ZoomFieldOfView 및 ZoomCamera)을 실행합니다.SetTargetDistance 함수3인칭 모드에서 카메라의 목표 거리를 설정하는 함수입니다. 줌을 .. 2024. 9. 21.
유니티 Camera Following ▣ 코드 설명 player: 카메라가 따라다닐 플레이어의 Transform을 연결합니다. minPosition, maxPosition: 카메라가 이동할 수 있는 범위를 지정합니다. minPosition은 최소 좌표, maxPosition은 최대 좌표입니다. 이 값들을 Mathf.Clamp로 제한하여 카메라가 해당 범위를 벗어나지 않게 합니다. cameraFOV: 카메라의 시야각을 설정하는 변수입니다. 기본값으로 60도를 설정했으며, 필요에 따라 조정 가능합니다. LateUpdate(): 플레이어의 움직임 이후 카메라가 자연스럽게 움직이도록 LateUpdate에서 카메라 위치를 업데이트합니다. ▣ 배경 오브젝트 크기 계산: backgroundRenderer.bounds는 배경 오브젝트의 바운딩 박스를 가져.. 2024. 9. 19.
유니티 PauseMenu ▣ 코드 설명 Time.timeScale: 게임의 시간 흐름을 조정하는 변수로, 0으로 설정하면 게임이 멈추고, 1로 설정하면 정상 속도로 돌아옵니다. pauseMenuUI: 게임 오브젝트로 설정된 메뉴 UI를 나타냅니다. 이 UI는 Canvas 안에 있는 메뉴 버튼들로 구성될 수 있으며, SetActive() 메서드를 사용하여 활성화하거나 비활성화할 수 있습니다. isPaused: 게임이 일시 정지 상태인지 확인하기 위한 불리언 변수입니다. Input.GetKeyDown(KeyCode.Escape): Esc 키가 눌리면 일시 정지 또는 재개 동작을 실행합니다. Resume(): 게임을 다시 시작하는 함수입니다. pauseMenuUI를 비활성화하고 Time.timeScale을 1로 설정해 시간 흐름을 정.. 2024. 9. 18.
유니티 Loading Scene ▣ 로딩씬을 생성하고 LodingSlider를 생성하고 제작합니다.그리고 Build Settings에서 씬 3개를 추가합니다.   ▣  SceneManager.LoadSceneAsync: 비동기적으로 씬을 로드하는 함수. AsyncOperation.allowSceneActivation: 로딩이 완료되었을 때 씬을 자동으로 활성화할지 여부를 설정하는 속성. Slider.value: Slider UI의 현재 값을 설정하거나 가져오는 속성. SceneManager.UnloadSceneAsync: 비동기적으로 씬을 언로드하는 함수. ▣ FindLoadingSliderInScene() 역할: 로딩 씬에서 LoadingSlider라는 이름을 가진 Slider UI 오브젝트를 찾고, 이를 loadingSlider 변.. 2024. 9. 18.
유니티 GameSettingsUIManager ▣ 먼저 Canvas를 생성하고 Button 및 Text를 활용하여 GameSettingUI를 제작합니다.    ▣ Canvas Scaler의 각 필드 설명 UI Scale Mode (UI 스케일 모드):UI의 스케일 방식에 대한 설정입니다. 해상도에 따라 UI가 어떻게 조정될지를 결정합니다. Constant Pixel Size: UI 요소의 크기를 픽셀 크기로 고정합니다. Scale with Screen Size: 화면 크기에 맞춰 UI 요소의 크기를 스케일 합니다. Constant Physical Size: 물리적 크기에 따라 UI 요소의 크기를 조정합니다.  ▣ Reference Resolution (기준 해상도):Scale with Screen Size 모드에서 사용됩니다. 기준 해상도를 설정하면.. 2024. 9. 17.
유니티 Camera Shake ▣ 스크립트 설명 Update: Input.GetMouseButtonDown(0)을 사용하여 마우스 왼쪽 버튼을 클릭했을 때 카메라 흔들림을 트리거합니다. Shake: 카메라의 위치를 흔들리게 만드는 코루틴입니다.Camera.main을 사용해 메인 카메라의 위치를 흔들고, 흔들림이 끝난 후 원래 위치로 복구합니다. shakeDuration과 shakeMagnitude: 각각 흔들림의 지속 시간과 강도를 조절하는 변수입니다. https://docs.unity3d.com/ScriptReference/Camera-main.html Unity - Scripting API: Camera.mainIf there is no enabled Camera component with the "MainCamera" tag, .. 2024. 9. 15.