- Today
- Total
프로그래밍 농장
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 5주차 학습 일지 본문
5주차에는 유니티 엔진을 활용한 강의를 주로 진행하였다.
저번 2주간 C# 스크립팅, 알고리즘과 코드작성에 대한 전반을 공부할때에는, 해당부분에서 중요한 부분이 더 많다고 느꼈다. 하지만 유니티 엔진을 직접 활용하고 간단한 토이프로젝트에 적용해보니 엔진자체에 대한 기본적인 이해도가 기반되어야 다양한 기능들을 구현할수있겠다는 깨달음을 얻었다.
또한 기존 C# 코드작성때와 마찬가지로 단순기능구현을 목적으로 사용하는것이 아닌, 체계적이고 구조화된 규칙에 따라 유니티엔진을 사용하여야 추후 유지보수 및 변동사항을 적용할때 올바른 방식이라는것도 학습하였다.
- 유니티 엔진 학습 ( GameObject 생성 및 부가적인 효과 적용 )
기본적으로 유니티 엔진에 스크립트를 생성하고, 해당 스크립트를 특정 GameObject의 component로 넣어주어, 프로젝트 빌드 시, 다양한 방식으로 스크립트 내의 기능들을 구현할 수 있다.
1. Instantiate() 를 이용하여 아래와 같이 GameObject를 각 5개 생성해주고, 각 게임오브젝트의 하이어라키를 아래와 같이 구성되도록 하시오.
public class Assignment : MonoBehaviour
{
[SerializeField]
private GameObject goPrefab;
public GameObject cam1;
public GameObject cam2;
GameObject go1;
GameObject go1_1;
GameObject go1_2;
GameObject go1_1_1;
GameObject go1_2_1;
// Start is called before the first frame update
void Start()
{
//
// 2. 아래와 같이 하이어라키를 구성하게끔 코드를 작성해주세요
// 1--- (1-1)
// | ㄴ (1-1-1)
// ㄴ (1-2)
// ㄴ (1-2-1)
go1 = Instantiate(goPrefab);
go1_1 = Instantiate(goPrefab, go1.transform);
go1_2 = Instantiate(goPrefab, go1.transform);
go1_1_1 = Instantiate(goPrefab, cam1.transform.position + new Vector3(0, 0, 5), Quaternion.Euler(Vector3.zero), go1_1.transform);
go1_2_1 = Instantiate(goPrefab, cam2.transform.position + new Vector3(0, 0, 5), Quaternion.Euler(Vector3.zero), go1_2.transform);
go1.name = "1";
go1_1.name = "1-1";
go1_2.name = "1-2";
go1_1_1.name = "1-1-1";
go1_2_1.name = "1-2-1";
위와 같이 GameObject 5개를 선언해준 후, Instantiate를 이용하여 각 인자에 해당 오브젝트의 생성위치 및 크기, 추후 적용시킬 cam에 대응되는 position값과 이름값을 선언해준다.
2. 아래와 같이 camera Object를 두개 생성 후, 해당 오브젝트의 Component인 rect 값을 조절하여 화면을 좌,우로 분할하고 각 카메라에 생성한 1-1, 1-2 오브젝트를 하나씩 배치되도록 위 Instatiate의 인자로 position값을 할당하여준다.
//
GetParentChild(go1);
//
// -------------------
// | | |
// | | |
// |________|________|
// 위와 같이 화면을 분할해주세요
Debug.Log("4번 완료");
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.LeftArrow))
{
Destroy(go1_1_1, 3f);
}
if (Input.GetKey(KeyCode.RightArrow))
{
Destroy(go1_2_1, 3f);
}
}
void GetParentChild(GameObject go)
{
for (int i = 1; i <= go.transform.childCount; i++)
{
Transform tr1 = go.transform.Find("1-" + i);
Debug.Log(tr1.transform.name);
for (int j = 0; j < tr1.transform.childCount; j++)
{
Debug.Log(tr1.transform.GetChild(j).name);
}
}
}
}
+ 추가적인 학습내용
Occulusion -> 노란색 영역이 형성되는 기준이 존재함 .
'Unit' -> 파란색박스가 Unit을 나누는 기준을 보여줌\
'Vector' -> 클래스는 아니고 Structure 이다 .
: 일종의 방향과 크기를 갖는 자료형 (타입) 이다.
위와 같이 실제로 Vector를 사용할때는 Nornalized를 사용하여 0~1까지 정규화를 수행해줌
but, vec2의 값이 실제로 바뀌지는 않지만 nomalized된 값을 뽑아주긴한다.
ex) 사전정의된 백터
-> Vector.one -> ( 0, 0, 0) Vector.left ( -1,0,0) Vector.up(0,1,0) ~~ 등등이 있다.
Vector.forward(0,0,1) Vector(0,0,-1) ~~
가장 자주 사용하는 Vector 구현방식
Debug.Log(Vector3.Distance(vec,vec2));
위는 vec~ vec2까지의 거리를 표현할때 사용한다.
AAB라는 알고리즘 ( Aligned Axesis Bounduring ) 을 사용하지만 -> 간단하게 Vector3를 사용하여 충돌처리를 구현
Vector.Lerp -> ( Linear InterPolation ) : 선형 보간 :
Vector.SmoothDemp -> 움직일때 사용
sigmoid 함수 -> '활성함수' (ex. 1~0 까지의 값을 smooth하게 가져감)
유데미코리아 바로가기 : https://bit.ly/3b8JGeD
본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.
#유데미, #유데미부트캠프, #취업부트캠프, #개발자부트캠프, #IT부트캠프, #부트캠프후기
'STARTERS' 카테고리의 다른 글
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 7주차 학습 일지 (0) | 2022.08.07 |
---|---|
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 6주차 학습 일지 (0) | 2022.07.31 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 4주차 학습 일지 [ 유데미 [retr0의 유니티(Unity C#)게임 프로그래밍 에센스 / 쉽게 배우는 c# 알고리즘 입문 / 게임 인류 / 인류는 메타버스로 .. (0) | 2022.07.17 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 3주차 학습 일지 (0) | 2022.07.10 |
유데미 스타터스 유니티 개발자 1기 취업 부트캠프 - 2주차 학습 일지 (0) | 2022.07.04 |