전체 글 57

공격을 받았을 때 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

C# 기본

1. 자료형과 변수 자료형, 변수, 값(자료) 자료형 변수 이름 = 값 정수형(int) -3, -1, 0, 2, 10 실수형(float) -2.5, -1.8, 0, 4.9 논리형(bool) true, false 문자열(string) "가나다", "abc" void Start() { int a = 10; float b = 0.1f; bool c = true; string name = "박록주"; print(name); //출력 } 2. 조건문 만약 ~하다면 { 이렇게 하고싶다 } 그렇지 않다면 { 이렇게 하고싶다 } void Start() { int money = 100000; if (money > 50000) //비교연산자 { print("너 부자야"); } else { print("내가 줄게"); } ..

유니티 2022.05.06

Terrain 지형 만들기

코딩 : 컴퓨터와 인간의 의사소통을 하기위한 언어 1. 문법적인특징 2. 논리적인 특징 = Algorithm 알고리즘 : 문제를 해결하기위해 순서를 만들고 하나씩 논리적으로 해결하는 것 ​ ​ 블록리 게임으로 알고리즘, 단계 간단하게 파악 가능 ! 하나씩 하나씩 쌓아가는 식으로 코딩하기 blockly.games 개발프로세스 -기획초안 -프로토타입 테스트 : 컨셉 -알파테스트 : 기능구현의 완료 ----------------- 이번 파트에서는 여기까지 -FGT(Focus Group Test) -베타테스트 : 안정화 -출시 ​ 유니티 실습 키보드 v : 쉽게 물체와 물체를 붙일 수 있음 rect tool : 한 쪽 면만 줄이고 늘릴 수 있음 shift ctrl : 면끼리 물체를 붙일 수 있음 ​ 추가한 에셋..

유니티 2022.05.04

유니티 3D 쿼터뷰 액션게임 만들기 - 돌격형, 원거리형 몬스터 / 공격 데미지

유니티 3D 쿼터뷰 액션게임 만들기 👾 다양한 몬스터 만들기 👾 1. 플레이어 피격 🔻 OnTriggerEnter()에 EnemyBullet 경우 로직 추가 ✏️ 무적 타임 🔻 무적타임을 위해 bool 변수 추가 bool Damaging; 🔻데미지를 받고 있지 않을 때만 실행, 데미지 받고 1초 동안 무적타임 ✏️ 데미지 입을 때마다 Player가 노란색으로 바뀌기 - meshRenderer 배열 변수 추가 (meshs) - Player는 머리 , 몸통 , 팔 , 다리 등 여러 메시를 가지고 있어서 배열 필요 📣 주의 GetComponentInChildren(); : 컴포넌트의 자식 첫 번째 것을 가지고옴 GetComponentsInChildren(); : 컴포넌트의 모든 자식을 가지고 옴 MeshRen..

유니티 2022.04.25

유니티 3D 쿼터뷰 액션게임 - 목표를 추적하는 내비게이션 AI / NavMeshAgent

유니티 3D 쿼터뷰 액션게임 만들기 👾 목표를 추적하는 AI 만들기 👾 1. 오브젝트 생성 🔻 올려진 적 오브젝트에 물리와 스크립트 세팅하기 🔻 MeshRenderer를 가져오는 GetComponent() -> GetComponentInChildren() 바꾸기 - 태그와 레이어를 Enemy로 설정 2. 내비게이션 ✏️ 유니티가 제공하는 내비게이션 AI 시스템 사용 📣 Nav 관련 클래스는 UnityEngine.AI 네임 스페이스 사용 📌 NavMeshAgent Navigation을 사용하는 인공지능 컴포넌트 NavMeshAgent 컴포넌트 가져오기 초기화 📌 SetDestination() 도착할 목표 위치 지정 함수 🔻 목표물 변수에 Player를 할당 📣 NavAgent를 사용하기 위해서는 NavMe..

유니티 2022.04.25