본문 바로가기

분류 전체보기635

유니티 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.
언리얼엔진5 c++ GetLocation() 함수들 차이 ▣ GetComponentLocation() 설명: SceneComponent의 월드 좌표를 반환합니다. 즉, 현재 게임 세계에서 해당 컴포넌트가 위치한 절대적인 좌표를 의미합니다.언제 사용해야 하는가? 다른 객체와의 거리나 방향을 구할 때. 물리적 계산이나 충돌 판정 등에서 정확한 월드 위치가 필요할 때. ▣ GetActorLocation() 설명: Actor의 월드 좌표를 반환합니다. Actor의 루트 컴포넌트(Root Component)의 위치를 기반으로, 월드에서의 절대 좌표를 제공합니다.언제 사용해야 하는가? 특정 Actor의 전체 위치를 얻고 싶을 때. 다른 Actor와의 상대적 위치나 방향을 계산할 때. ▣ GetRelativeLocation() 설명: SceneComponent의 상대 좌표.. 2024. 9. 16.
유니티 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.
유니티 Single RayCast, Multi RayCast ▣ Single Raycast: 하나의 광선을 발사하여 충돌한 첫 번째 물체를 감지합니다.일반적으로 특정 물체와의 충돌 여부만 확인할 때 사용됩니다. ▣ Multi Raycast: 여러 물체와 충돌할 수 있는 광선을 발사하여 광선과 충돌한 모든 물체를 감지합니다. 여러 개의 충돌 결과를 처리해야 할 때 유용합니다. https://docs.unity3d.com/ScriptReference/Physics.Raycast.html Unity - Scripting API: Physics.RaycastDescription Casts a ray, from point origin, in direction direction, of length maxDistance, against all colliders in the S.. 2024. 9. 14.
유니티 Animator, Animation, Blend Tree https://makerejoicegames.tistory.com/521 유니티 애니메이션 스프라이트▣ 애니메이션 에셋을 가져오고 스프라이트를 선택한 다음 Sprite Mode와 Filter Mode를 지정하고 Sprite Editor을 선택합니다.   ▣ Silce메뉴를 선택하고 Type을 Automatic을 선택한 다음 Slice로 자르기를 진makerejoicegames.tistory.com  ▣ Animation (애니메이션) Animation은 게임 오브젝트의 동작을 프레임 단위로 정의한 것입니다. 애니메이션 클립(Animation Clip)을 통해 오브젝트가 어떤 방식으로 움직이는지, 변화하는지를 설정할 수 있습니다. 예를 들어, 캐릭터가 걷거나 뛰는 동작, 또는 문이 열리고 닫히는 애니메이션.. 2024. 9. 14.
언리얼엔진5 c++ ConstructorHelpers::FClassFinder와 LoadClass<>, LoadObject<> 차이 ▣ ConstructorHelpers::FClassFinder 역할: 클래스를 찾는 데 사용되며, 주로 객체(액터, 컴포넌트 등)의 생성자(Constructor)에서 사용됩니다. 사용 시점: 객체가 생성될 때, 자산이나 클래스를 미리 로드하여 사용할 때 주로 사용됩니다. 특징: 주로 생성자 안에서 사용되며, 클래스나 자산을 즉시 로드합니다. 하드 리퍼런스를 사용하기 때문에 로드 경로에 있는 자산이나 클래스가 반드시 존재해야 합니다. 잘못된 경로나 존재하지 않는 클래스가 있을 경우 런타임 에러가 발생할 수 있습니다. 로드가 즉시 이루어지기 때문에, 게임 시작 시점 또는 에디터 로드 시점에 성능 저하를 초래할 수 있습니다. 주 사용 사례: 클래스가 반드시 있어야 하는 경우: 즉시 해당 클래스를 찾아서 로드해.. 2024. 9. 14.
유니티 오브젝트 스크롤링 ▣ 변수 설명 objectPrefab: 생성할 오브젝트의 프리팹을 Inspector에서 연결할 수 있는 변수입니다. poolSize: 오브젝트 풀의 크기를 설정합니다. 한 번에 최대 몇 개의 오브젝트를 풀에 저장할지 결정합니다. spawnXPosition: 오브젝트가 생성될 X 좌표를 설정하는 값입니다. 예를 들어 오른쪽에서 생성되도록 X 좌표를 설정할 수 있습니다. minYPosition / maxYPosition: 오브젝트가 생성될 때 Y 좌표의 범위를 설정하는 값입니다. Y 좌표는 이 범위 내에서 랜덤 하게 결정됩니다. leftBound: 오브젝트가 왼쪽으로 이동할 때 화면의 왼쪽 끝에 닿는 X 좌표입니다. 이 좌표를 넘어가면 오브젝트는 비활성화됩니다. spawnInterval: 오브젝트가 생성되는.. 2024. 9. 13.
유니티 2D Collider ▣ OnCollisionEnter2D:언제 호출되는가: 오브젝트가 다른 오브젝트와 처음 충돌할 때. 사용 목적: 충돌이 발생했을 때 어떤 논리를 실행해야 할 때 사용. 예를 들어, 바닥에 닿으면 플레이어를 바닥에 고정하는 용도로 사용. ▣ OnCollisionStay2D:언제 호출되는가: 오브젝트가 다른 오브젝트와 계속해서 충돌 중일 때, 매 프레임마다 호출됨. 사용 목적: 충돌 상태가 지속되는 동안 특정 동작을 수행해야 할 때 사용. 예를 들어, 오브젝트가 지속적으로 충돌하고 있는지 확인하는 용도로 사용. ▣ OnCollisionExit2D:언제 호출되는가: 오브젝트가 다른 오브젝트와의 충돌에서 벗어났을 때. 사용 목적: 충돌이 끝났을 때 실행할 동작이 필요할 때 사용. 예를 들어, 바닥에서 떨어지면 .. 2024. 9. 13.
유니티 2D 배경 스크롤링 ▣ 코드 설명 배경 배열 (public GameObject[] backgrounds):이 배열은 배경 오브젝트 3개를 참조합니다. backgrounds[0], backgrounds[1], backgrounds[2]와 같은 방식으로 접근하며, 각각이 배경 오브젝트를 나타냅니다. Unity 에디터에서 3개의 배경 오브젝트를 이 배열에 드래그해서 할당합니다.배경 이동 속도 (public float backgroundSpeed):backgroundSpeed 변수는 배경이 왼쪽으로 이동하는 속도를 제어합니다. 값이 클수록 배경이 더 빠르게 움직입니다.배경의 가로길이 (private float backgroundWidth):backgroundWidth는 배경 오브젝트의 실제 가로 크기를 저장합니다. 배경을 배치하거.. 2024. 9. 12.
유니티 코루틴 ▣ 코드 설명 Start() 메서드: 게임이 시작되면 유니티가 자동으로 호출하는 메서드입니다. 여기서 StartCoroutine()을 사용해 코루틴을 시작합니다. MoveCharacter() 메서드: IEnumerator 타입의 코루틴입니다. while (true)를 사용해 무한히 반복됩니다. transform.Translate(Vector2.right * moveSpeed): 캐릭터를 오른쪽으로 moveSpeed만큼 이동시킵니다. yield return new WaitForSeconds(2f): 2초 동안 대기한 후, 다시 반복문이 실행됩니다. Debug.Log()로 이동 후 콘솔에 로그를 출력하여 작업이 수행되었음을 확인할 수 있습니다.   ▣ 코드 설명 jumpForce: 캐릭터가 점프할 때 적용되.. 2024. 9. 12.
유니티 콜리전 범위 시각화 ▣ 설명 BoxCollider2D 컴포넌트의 콜리전 영역을 씬 뷰에서 그리기 위해 OnDrawGizmos()를 사용합니다. Gizmos.DrawWireCube()는 Wireframe 형태의 박스를 그려줍니다. boxCollider.offset과 boxCollider.size를 사용하여 콜리전 박스의 정확한 위치와 크기를 설정합니다.    ▣ 설명 BoxCollider 컴포넌트의 콜리전 영역을 씬 뷰에서 시각적으로 확인할 수 있게 합니다. Gizmos.DrawWireCube()는 3D 박스 형태의 콜리전 영역을 그립니다. boxCollider.center와 boxCollider.size를 사용하여 콜리전 박스의 위치와 크기를 정확히 설정합니다. https://docs.unity3d.com/ScriptRef.. 2024. 9. 11.