게임오브젝트 이동
- transform.position을 통해
내가 소속되어 있는 게임오브젝트의 Transform 컴포넌트
- 1이동 시에는 Vector3.right로 표현가능하다
Time.deltaTime
두 컴퓨터에서 캐릭터 이동 했을 때
-
캐릭터의 Update() 1회 당 이동거리를 5m라고 할 때
-
사양이 좋지 않은 컴퓨터는 60초에 Update() 60회
-
사양이 좋은 컴퓨터는 60초에 Update() 120회
-
이전 Update() 종료부터 다음 Update() 시작까지의 시간
-
즉 업데이트 사이의 시간
- 1분에 Update가 60회 호출이면 TimedeltaTime은 1
이동거리 = 방향 속도 Time.deltaTime
- 5m 60 1 (사양이 좋은 경우)
- 5m 120 0.5 (사양이 좋지 않은 경우)
- float value = Input.GetAxisRaw("단축키명")
긍정: +1 부정: -1 대기: 0
- GetAxis는 키를 누르고 있으면 0에서 1or-1로 서서히 증가
- horziontal, vertical다 여기에서 세팅
오브젝트 물리와 충돌
Rigidbody2D 컴포넌트
- 2차원 공간에서 오브젝트의 물리와 중력을 담당하는 컴포넌트
Collider2D 컴포넌트
- 2차원 공간에서 오브젝트의 충돌 범위를 나타내는 컴포넌트
- Material: 해당 오브젝트의 마찰력 등을 설정할 수 있는 물리 메터리얼 등록 가능
- Is Trigger: 활성화 되면 오브젝트가 충돌되지 않고 뚫고 지나간다
- Offset: 충돌 범위 중심점 위치
- Size: 충돌 범위 크기
서로 다른 두 오브젝트가 충돌하기 위한 필수 조건
- Rigidbody2D에 있는 velocity 변수만 설정해주면 Rigidbody2D에 의해서 이동이 가능하다
GetComponent<컴포넌트 이름>();
게임 오브젝트의 컴포넌트에 접근하는 방법
- 두 오브젝트 모두 충돌 범위인 collider2D컴포넌트를 가지고 있어야 하고
- 둘 중 하나 이상의 오브젝트가 물리 처리를 담당하는 Rigidbody2D컴포넌트를 가지고 있어야 한다
게임 내에서 사용법
- 충돌에 의해 함수가 호출되고, 함수에 다양한 역할을 하게 된다
- 아이템을 흭득하거나, 적을 공격하거나, 함정을 밟아 장애물이 튀어나오거나
OnCollisionEnter2D()
OnCollisionStay2D()
OnCollisionExit2D()
- 두 오브젝트가 떨어져서 충돌이 종료되는 순간 1회 호출
[SerializeField]
- 해당 변수의 바로 윗줄에 작성
- Transform의 position, rotation 변수들과 같이 Inspector View에서 변수의 옵션을 조절할 수 있게 해준다
OnTriggerEnter2D()
OnTriggerStay2D()
OnTriggerStayExit2D()
자신이 아닌 다른 오브젝트를 움직이게 할 때
- moveObject라는 게임 오브젝트를 만들었고
게임오프벡트 생성함수 Instantiate()
프리팹을 사용하는 이유
- 게임월드에 있는 원본 오브젝트를 복제해서 사용하게 되면 원본이 죽었을 때 복사본 오브젝트가 없어서 더 이상 적을 생성할 수 없다.
- 안전공간에 있는 prefeb을 사용해서 한다
prefeb만드는 방법
- 원하는 형태로 게임오브젝트를 꾸며준다.(적 캐릭, 아이템 등)
- Hierachy View의 게임오브젝트를 Project View로 드래그&드롭
- Hierachy View에 있는 게임오브젝트를 삭제
- Instantiate를 통해 prefeb을 복제
Instantiate사용
- instatntiate(게임오브젝트, 위치, 회전값)
- 회전을 안줘도 되면 기본값이 Quaternion.identity사용
반복문으로 오브젝트 생성
임의의 위치에서 오브젝트 생성
스폰 포인트에서 생성
공격기능
- GetKeyDown으로 입력을 받고 keycode.space로 스페이스 입력을 받음
- 플레이어 위치에서 바로 클론이 생긴다
원하는 방향 공격
- lastMoveDirection 변수 설정해 처음 초기값 오른쪽으로 설정
- if문으로 이볅된 방향키의 방향으로 총알 발사하게 한다
- GetConponent를 통해 movement2D의 Setup함수의 매개변수를 lastMoveDirection으로 한다
게임오브젝트 삭제 함수 Destroy()
충돌했을 때 변화주기
- rigidbody2D와 BoxCollider2D를 설정 is trigger설정으로 Ontrigger메소드 실행시 수행 가능하게 한다
- 탄환인 머리도 충돌을 위해 collider를 줘야한다
출처: https://www.youtube.com/watch?v=2jc72B4Tcz4&list=PLC2Tit6NyViewOPACJai5zNAfZuUW8aYq&index=11