본문 바로가기

C#60

[Unity] 오브젝트 충돌 안녕하세요 오늘은 통과하지 못하는 오브젝트를 세워보겠습니다. 오늘하는 것을 응용하면 맵에 이동하지 못하는 벽과 같은 경계선을 만들 수 있습니다. 먼저 맵에 오브젝트를 하나 생성합니다. (종류나 이미지 상관없습니다.) 생성을 하면 현재는 캐릭터가 자연스럽게 통과하게 됩니다. 생성한 오브젝트를 눌러서 인스펙터에 BoxCollider2D 컴포넌트를 추가합니다. 2차원 형태로 충돌 경계선을 만들어줍니다. 크기를 조정하면서 너무 작게 설정하면 오브젝트를 거의 관통한 상태에서 멈추게 되고, 크기가 과하면 오브젝트에 다가가지도 않은 상태에서 투명한 벽에 막히게 됩니다. 이렇게 연두색의 2차원 상자 형태로 충돌 경계선이 생성되게 됩니다. 저 경계선 모양대로 통과하지 못합니다. 오브젝트로 충돌설정은 되었으나 캐릭터가 c.. 2022. 9. 26.
[C#][Unity] UI 속성 1. 이벤트와 레이 캐스팅 (Event & Raycast) 사용자로부터의 이벤트는 이벤트 시스템에 의해 관리되며, 이벤트가 발생하는 것은 스크린 영역에서 발생한다. 레이 캐스팅은 스크린 영역에서 월드로 레이(광선)를 발사해 대상 오브젝트에 이벤트를 처리하도록 한다. UI 요소는 Interactable 또는 Raycast Target이라는 속성이 있다. Raycast Target을 승인하지 않을 경우에는 해당 UI 요소는 이벤트를 처리하지 않는다. 2. 마스크( Mask ) Mask 컴포넌트는 특정 영역을 마스크로 설정하여, 나머진 부분을 가리는데 사용된다. 이미지와 같은 그래픽적 특성을 가지는 UI 요소는 Maskable 속성을 가지고 있다. Maskable 속성의 기본 값은 체크된 상태이다. Maska.. 2022. 9. 16.
[Unity] 타일맵으로 맵 구성하기 안녕하세요. 오늘은 타일맵으로 맵을 구성해보겠습니다. 먼저 계층구조에서 2D 오브젝트 - 타일맵 - 직사각형을 생성합니다. 생성을 하고 나면 Grid라는 파일이 생기고 그 하위파일로 생깁니다. 이제 맵구성을 위한 타일팔레트를 사용하겠습니다. 상단의 메뉴에서 Window - 2D - 타일팔레트를 선택합니다. 맵으로 구성하고자 하는 타일 파일(이미지)을 팔레트로 드래그를 합니다. 드래그를 하면 팔레트에 어떤 이름으로 등록할지 입력하는 창이 뜨고 저장을 누릅니다. 이제 팔레트에서 원하는 타일을 선택을 하고 위에서 생성한 Grid - map 안에 클릭을 하면서 맵을 구성합니다. 2022. 9. 11.
[C#][Unity] 프리팹이란? Unity에서 프리팹은 재사용, reuse를 효율적으로 하기 위해 만든다. 프리팹의 가장 큰 장점은 만들어 둔 오브젝트는 한 Scene에 여러 개를 불러와도 새로운 오브젝트처럼 메모리를 많이 차지하지 않는다. 한 개의 프리팹을 이용해 여러 가지 오브젝트들을 만들어두면 한꺼번에 수정할 수 있다는 장점이 있다. -> 유지보수에 용이하다. 2022. 9. 1.
[C#][Unity] 2D 캐릭터 이동 애니메이션 안녕하세요. 오늘은 2D 캐릭터 이동 애니메이션을 구현해보겠습니다. 유니티 버전 - 2021.3.4f1 아래 첨부한 링크에서 다운받은 png를 sprite Editor를 통해 잘라줍니다. 한 행 전체가 한 방향의 모션이 됩니다. 8개씩 모아서 씬으로 드래그를 하면 애니메이션 생성창이 뜹니다. 저는 walk라고 저장을 했습니다. 생성을 하게되면 애니메이션 파일과 컨트롤러 두가지가 생기게됩니다. 계층구조에 생성된 오브젝트 이름을 player로 이름을 바꾸겠습니다. 그리고 컴포넌트 추가에 Rigidbody2D를 추가합니다. 그런 다음 해당 오브젝트에 PlayerController 이름으로 새스크립트를 추가합니다. 그리고 walk 애니메이션을 생성할때 만들어진 rpg_sprite_walk_0 컨트롤러 파일을 W.. 2022. 8. 27.
[C#][Unity] 코루틴 사용 방법 1. 코루틴은 IEnumerator라는 반환형으로 시작해야합니다. 2. yield retrun이 반드시 함수 내부에 존재해야합니다. yield return 의 종류 1. yield return null; : 다음 프레임에 실행 됩니다. 2. yield return new WaitForSeconds( float ); : 매개변수로 입력한 숫자에 해당하는 초만 큼 기다렸다가 실행됩니다. 3. yield return new WaitForSecondsRealtime( flaot ); : 매개변수로 입력한 숫자에 해당하는 초만큼 기다렸다가 실행됩니다. 4. 그외 : yield return + new WaitForFixedUpdate / WaitForEndOfFrame ... 5. yield break; yield.. 2022. 8. 16.
[C#][Unity] 상자 열고 닫기 안녕하세요. 오늘은 게임에서 상자 열고 닫는 것을 진행해보겠습니다. 유니티 버전 - 2021.3.4f1 먼저 글 하단에 있는 링크에서 상자를 다운받고 sprite slice로 2등분합니다. 먼저 계층구조에서 emptyObject (빈 오브젝트생성) 을 하겠습니다. 오브젝트에 위에서 자른 상자이미지 두개를 넣어줍니다. 해당 오브젝트에 Box collider 2D를 추가해주세요 그리고 asset에 새 "interactable"이라는 스크립트를 생성합니다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Interactable : MonoBehaviour { public virtual void I.. 2022. 8. 12.
[C#][Unity] Getkey, GetKeyDown, GetKeyUp Getkey : 해당 키를 누르는 동안 true를 반복적으로 반환한다. EX) 꾹 눌러서 총알을 계속 발사하기 GetKeyDown : 해당 키를 누르면 단 한 번 true를 반환한다. EX) UI나 손전등을 켜고 끄는 것 GetKeyUp : 해당 키 누름이 해제될 때 true를 한 번 반환한다. 2022. 8. 1.
[C#][Unity] 낮과 밤 만들기 안녕하세요. 오늘은 c# 유니티로 낮과 밤을 만들어 보겠습니다. 유니티 버전 - 2021.3.4f1 구현하기에 앞서 window - package manger 에서 Unity Registry - Universal RP 를 설치합니다 그 다음, 전체 빛설정을 하기 위해 project에서 오른쪽 클릭 - create - rendering - urp asset(universal) 을 생성합니다. 저 두개의 파일이 생성 될 것입니다. 그 다음, 상단의 메뉴 중에서 편집(edit) - 프로젝트 세팅에 들어갑니다. 그래픽스에서 URP Global setting - scriptable render pipline setting 에 위에서 생성한 Asset을 다음과 같이 추가합니다. 그러면 기본 설정이 끝났습니다, 본격.. 2022. 7. 30.