Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

시작은 0부터

9. RigidBody Freeze, Public 변수값 문제, 슈팅게임 완료 본문

Unity 학습일지

9. RigidBody Freeze, Public 변수값 문제, 슈팅게임 완료

0base 2022. 8. 17. 00:19

    RigidBody 기능 중에는 Freeze 기능이 있다. Position 과 Rotation이 있는데 Freeze 를 체크하면 '물리적 힘'에 의해서 값이 변하지 않도록 고정시키는 역할을 한다. 즉, rigidbody.AddForce() 나 rigidbody.velocity 같은 물리적 이동에 의해서는 고정 값이 변하지 않지만, transform.Translate 와 같은 transform을 이용한 위치 이동은 고정할 수 없다.

 

유니티에서는 멤버변수를 public으로 선언하면 자동으로 유니티 내부에서 컴포넌트에 해당 변수를 제어하는 칸이 생성되어 스크립트창을 열지 않고도 값을 입력할 수 있다. 그런데 이때 입력한 값이 스크립트상에서 입력한 값보다 우선적으로 작용하여 스크립트에서 아무리 변수 값에 변화를 줘도 SerializeField화된 컴포넌트 입력창에 값을 넣은 상태면 해당 값으로 고정된다. 이 문제 때문에 왜 스크립트 상에서 값에 변화를 줘도 변하지 않는지 해결하지 못했는데 동기의 도움으로 알게 되었다.

 

 

10일부터 시작해서 붙들었던 슈팅게임은 일단 완료했다. 다만 메모리 최적화를 위해 추후에 인스턴스 생성 부분은 풀링을 이용하여 Destroy 와 Instantiate 를 최소화하고 SetActive를 활용하는 방법으로 수정해나갈 것이다.

 

일단은 플레이어가 입력한 값을 GetAxis로 받아 X축 좌우로 움직이고, 움직이는 방향에 따라 천천히 기울어지며, 자동으로 로 총알이 앞으로 발사된다.

 

일정주기마다 적이 멀리서부터 플레이어를 향해 전진하며 생성되며, 적은 직선이동, 플레이어를 향해 전진 및 총알 발사, 가로축을 왔다갔다하며 앞으로 대각이동하는 적무리(선두 적이 죽으면 뒤따라오던 적들도 전부 따라 죽음) 등을 구현했고, 플레이시간이 지남에 따라 점점 등장하는 적의 종류가 달라지면서 난이도를 높였다.(체력이 높은 적, 빠른 속도로 플레이어를 향해 돌진하는 적 등)

 

또한, 일정확률로 아이템이 등장하며 아이템은 부스터(속도증가 및 무적), 공격속도 증가, 공격력 증가 중 랜덤확률로 얻는다.