어떻게 게임 이름이 ART F4 👀
1. 이번 주에 배운 기술이나 개념 중 가장 기억에 남는 3가지는 무엇인가요?
이번 주는 ALT F4 게임을 모방한 ART F4를 팀 과제로 개발했어요 !
깃허브 fork 방식을 이용한 협업, Addressable, SoundManager가 가장 인상깊었어요 😶🌫️
2. 이번 주 과정 중 막혔던 문제나 오류가 있었나요? 어떻게 해결했나요? (없다면 가장 인상 깊었던 실습 내용)
1. 정말 댕청(?) 했던 실수

플레이어 컨트롤러를 새로 만드는데,
자꾸 물체에 충돌하면 하늘로 날라가길래(y축이 무한히 증가)
새로 캐릭터 만들어서 다시 작업중인데
이번엔 캡슐 콜라이더가 일자로 뽈뽈뽈 가지 않고 넘어져서 캐릭터가 더 이상 움직이지 않는 현상이 발생했어요
이거 가지고 몇 시간 고민했는데,
정답은 Rigidbody-Constraints-Freeze Rotation 체크를 안해준 거였던. . . 🤦🏻♀️
2. 공 발사 관련 이슈
공이 발사는 되는데 알을 낳듯이 바닥에 생성되었따,,,
Rigidbody의 mass값이 너무 커서 공이 무거워져서 그런게 아니냐는 팀원들의 조언!
mass값도 줄였는데 똑같길래 공의 생성 위치를 따로 설정해줬습니당
public void OnThrowInput(InputAction.CallbackContext context)
{
// 쿨타임 체크
if (Time.time - lastThrowTime >= throwCooldown)
{
// 쿨타임 초기화
lastThrowTime = Time.time;
// 플레이어 기준 공 발사 위치
Vector3 throwPosition = transform.position + transform.forward 0.8f + transform.right 0.7f + Vector3.up * 1.2f;
// 오브젝트 풀링 사용하면 더 좋음
GameObject throwableInstance = Instantiate(throwablePrefab, throwPosition, Quaternion.identity);
Rigidbody throwRigidbody = throwableInstance.GetComponent<Rigidbody>();
throwRigidbody.AddForce(transform.forward * throwForce, ForceMode.Impulse);
}
}3. Pause판넬 중첩 문제
public class UI_Manager : MonoBehaviour {
#region Fields
...
private bool isPausePanelOpen = false; // PausePanel이 중첩 띄워지는 현상 방지용
#endregion
#region Fields
public bool IsPausePanelOpen
{
get { return isPausePanelOpen; }
private set { isPausePanelOpen = value; }
}
...
#endregion
...
public void ClosePausePanel()
{
_onClosePausePanel?.Invoke();
Main.PlayerControl.ToggleCursor(false);
SetIsPausePanelOpen(false);
}
public void SetIsPausePanelOpen(bool value)
{
IsPausePanelOpen = value;
}
}ESC키를 눌러 PausePanel을 띄운 상태에서 계속 ESC키를 누르면 PausePanel이 중첩되어 계속 떴어요 ,,
ESC키를 연타하면 판넬을 나가는 버튼을 눌러도 판넬이 끊임없이 나와버리는. . .
PausePanel이 한 번 띄워졌다면 더 이상 띄우지 못하게 bool값으로 처리했습니당
using Scripts.UI.Scene_UI;
using UnityEngine;
namespace Scripts.Scene
{
public class SampleScene : BaseScene
{
...
private void Update()
{
if (Input.GetKeyDown(KeyCode.Escape) && !Main.UI.IsPausePanelOpen) // ESC 누르면 Pause
{
OpenPausePopUp();
}
}
...
private void OpenPausePopUp()
{
Main.UI.OpenPopup<PausePanel_Popup>();
Main.PlayerControl.ToggleCursor(true);
Main.UI.SetIsPausePanelOpen(true);
}
}
}사실 isPausePanelOpen을 public 변수로 선언해서 쓰면 가장 좋지만(좋긴 뭐가 좋아 편한거지(?)),
전역변수 지양하기 운동에 적극 동참 중이애오
전역변수 대신 프로퍼티를 만들어 사용해보았는데,
private set으로 두면 다른 클래스에서 bool값을 true false로 바꿀 수 없어요.
이번에도 set으로 바꾸지 말고 private set을 유지하는 대신, SetIsPausePanelOpen() 메서드를 이용해 bool값을 간접적으로 바꾸도록 했습니다 !
나 좀 발전한듯 🤠 예전 같았으면 냅다 public bool isPausePanelOpen으로 썼을 텐데!!
3. 이번 주 수업 진도 속도, 강사님의 강의 스타일, 혹은 반 분위기는 어땠나요?
fork 방식 협업은 처음 해봤는데 팀원분이 친절히 알려주셔서 감사햇어요 !

fork 방식 협업에서 Develop에 업데이트 사항이 추가될 경우 바로 바로 Sync fork-Update branch로 변경사항을 받아와야 하고,
그리고 내 작업물 커밋-머지 후 pull request(PR) 필수!
4. 다음 주에는 어떤 부분을 보완하고 싶나요?
Pause 판넬이 떴을 때도 마우스를 움직이면 플레이어의 시점이 움직이는데, 이걸 고정시키고 싶어요 !
왜 Time.timeScale = 0인데도 움직이는거쥐 ╰(‵□′)╯
댓글
댓글이 없습니다.
