유니티 40

미니맵 만들기 / Raw Image / Render Texture

Raw Image & Render Texture & 미니맵 만들기 ✏️ 실시간으로 미니맵 출력하기 🔻Canvas에 RawImage를 추가한다 🔻씬에 Minimap 용 카메라를 추가한다 🔻 카메라 Target Texture (Render Texture)에 넣어줄 Render Texture를 Project창에 새로 만들고 할당한다 🔻 RawImage MiniMap에도 Render Texture를 할당한다 🔻 현재 미니맵 카메라는 Player를 따라다니지 않기 때문에 Player의 자식으로 넣어준다 ✏️ 미니맵의 모양 바꾸기 원하는 마스크 이미지를 가져온다 (원이나 다른 모양) 🔻 Canvas에 Image를 추가하고 마스크 이미지를 source에 넣는다 RawImage Minimap의 RectTransform..

유니티 2022.06.06

Slider HP Bar / property / Billboard

Slider HP Bar 를 추가 & Enemy HP 감소 다루기 & Billboard 🔻 HP바를 표시할 오브젝트 아래에 Canvas를 추가하고, 크기를 조정한다. 📣 WorldSpace로 변경 🔻 Canvas 아래에 Slider UI를 추가한다 Handle Slide Area 손잡이는 필요에 따라 비활성화하여 없앤다 🔻 EnemyHP 스크립트를 새로 생성하여 컴포넌트로 추가한다 📌 체력은 property 프로퍼티로 생성한다 //태어날 때 체력을 최대체력으로 하고싶다 //UI도 같이 표현하고 싶다 using UnityEngine.UI; public class EnemyHP : MonoBehaviour { public int maxHP = 2; int hp; public Slider sliderHP; p..

유니티 2022.06.06

player 순찰 & 추적 / waypoint / NavMeshAgent

Floor의 Navigation을 Bake 한다 순찰 & 추적할 Enemy를 생성하고 NavMeshAgent와 Enmey.cs를 컴포넌트추가한다 Enemy가 순찰할 포인트를 만든다 빈 오브젝트 PathManager에 자식 WayPoint를 추가한다. 부모에 PathManager.cs도 추가한다 PathManager.cs 스크립트에서 waypoint 순찰 지점 목록을 배열로 가져온다. //waypoint목록을 가져오고싶다 public class PathManager : MonoBehaviour { public static PathManager instance; public Transform[] wayPoints; //배열 생성 void Awake() { instance = this; } void Start..

유니티 2022.06.06

애니메이션의 특정 부분에 다른 이벤트가 함께 나타나는 기능 / Animation Event / Hit

애니메이션의 원하는 부분에 다른 이벤트가 함께 나타나게 하기 대부분 가져온 애니메이션의 경우, Attack(Read-Only)로 되어있기 때문에 수정이 불가능 하다 즉, 수정 가능한 애니메이션으로 바꿔야 한다 본래 애니메이션을 Ctrl+D 로 복붙하여 날 것의 애니메이션을 만든다 그럼 Read-Only였던 애니메이션은 수정 가능한 애니메이션이 된다 수정 가능한 애니메이션이 되었다면, 행동 중에 원하는 부분만 콕 집을 수 있다 ! ✏️ Add Animation Event : 긴 형태의 아이콘이 바로 콕 집는 아이콘이다 콕 집은 Animation Event를 클릭하면 Inspector창에 사용가능한 함수 목록이 뜬다 (아직 설정한 것이 없어 No Function이다) ( Animator는 이미 추가되어있음 ..

유니티 2022.06.05

공격을 받았을 때 Material 바꾸기 (Flash effect)

모두 Enemy script 바꾸고 싶은 색의 material를 만들고 assign 한다 public Material matWhite; Damage 데미지를 받을 때 코루틴 함수로 0.2초 뒤에 Material를 교체하는 로직 SkinnedMeshRenderer와 GetComponentsInChildren -> 스크립트가 있는 오브젝트 자식의 모든 MeshRederer를 가져온다 Material의 리스트 backup를 만들어서 기존 material을 저장하고, 다른 white material를 불러와 바꾼다 smr[i].material은 현재 material을 갖고 있는 리스트이다 ! 0.2초 후에 기존 matrial로 돌아오도록 smr[i].material = backup[i]로 선언한다 Skinned..

유니티 2022.05.24

싱글톤 Singleton (C#)

✏️ Singleton Pattern이란? 어떤 클래스가 최초 한 번 만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 패턴이다 전체에 단 하나이기 때문에 따로 매번 오브젝트를 생성하거나 탐색해서 찾을 필요없이 instance를 통해 빠르게 접근한다 ✏️ 언제 사용할까? 여러 곳에서 동일한 상태의 객체를 동시에 접근해야 할 때 동일한 자원이나 데이터를 처리하는 객체가 불필요하게 여러 개 만들어질 필요가 없는 경우 Scene과 Scene 사이를 넘어갈 때 앞의 Scene에서 데이터를 받아와서 다음 Scene에서 사용하고 싶을 때 활용 해당 클래스의 instance가 하나만 존재, 어디서든지 그 instance에 접근할 수 있어야 함 public으로 지정된 생성자가 없어야한다 ins..

유니티 2022.05.15

FBSGunTarget 1인칭 시점 object grab

FBSGunTarget 1인칭 시점 object grab ! 전체적인 구도 Player시점에 카메라가 위치함 , 앞에있는 큐브를 집는 로직 Hierarchy창 Player Inspector Hand Script public class Hand : MonoBehaviour { Transform cam; Transform grabObject; public Transform hand; void Start() { cam = Camera.main.transform; } // Update is called once per frame void Update() { // 만약 잡은물체가 있다면 if (grabObject != null) { // 잡은 물체를 목적지를 향해 이동시키고 싶다 grabObject.positio..

유니티 2022.05.12

프로퍼티(Property) get; set;

점수 처리 프로퍼티 선언하는 문법 class 클래스이름 { 데이터형식 필드이름; 접근한정자 데이터형식 프로퍼티이름 { get { return 필드이름; } set { 필드이름 = value; } } } Property 프로퍼티 예시 1. class MyClass { private int myField; public int MyField { get { return myField; } set { myField = value; } } } 2. int score; public int SCORE { get { return score; } set { score = value; } } 3. int hp; public int maxHP = 3; public Slider slierHP; //프로퍼티 public int ..

유니티 2022.05.12

c# 기본

1. 자료형과 변수 자료형 변수 이름 = 값; int, float, bool, string string name = "이름"; ​ 2. 조건문 if (조건) { } else if (조건) { } else (조건) { } ​ 3. 반복문 ​ for (int i = 0; i 충돌 가능 충돌하기 위해서는 충돌체와 리지드바디가 있어야 함 ! ​ Player를 타겟하여 에너미가 쫓음 public class Enemy : MonoBehaviour { Vector3 dir; public float speed = 5; void Start() { //태어날 때 방향을 정하고 싶다 int randValue = Random.Range(0, 10); // 30% 확률로는 플레이어 방향, if (randValue < 3 ) {..

유니티 2022.05.09

Vector3 , Unity Lifecycle, 타겟 추적, 총구 발사 생성

위치 position 속도 velocity 시간 time ​ ​ 이동 공식 P = P0 + vt 내일의 나 = 오늘의 나 + 오늘 할 일 ​ 가속도 공식 v = v0 + at ​ 힘의 공식 F = ma ​ ​ Vector : 방향 x 크기 더하기, 빼기 스칼라 곱하기 - 내적 dot / 벡터 곱하기 - 외적 cross ​ Scalar : 크기 ​ ​ 하드코딩 : 수치값을 지정하는 것 (번거로움) 직렬화 serialization : public으로 값 공개 및 저장 ​ ​ 오늘의 할 일 3가지 : 학습, 일에 관한 것 7가지 : 습관을 바꾸는 연습 (사소한 것) 목표는 All Clear ! ​ ​ Unity lifecycle 주황색 : 한 번만 호출 보라색 : 프레임마다 반복호출 짙은 색 : 생기고 사라짐..

유니티 2022.05.09