스트레스 많이 받을거야 ༼ ᓄºل͟º ༽ᓄ
1. 이번 주에 배운 기술이나 개념 중 가장 기억에 남는 3가지는 무엇인가요?

저번 주에 이어서 ART F4 게임을 마무리하는 단계였어요 ⎛⎝O⏝⏝O⎛⎝
이번 주의 핵심 개념은 Addressable, Raycast, SoundManager 입니다 !
2. 이번 주 과정 중 막혔던 문제나 오류가 있었나요? 어떻게 해결했나요? (없다면 가장 인상 깊었던 실습 내용)
1. 지난 주 일기에 이어서 ,,, 판넬이 떴을 때 마우스를 움직여도 카메라가 따라가지 않게 하고 싶었는데
일단 Debug.Log로 판넬을 띄울 때 toggle이 true가 되고 (마우스 잠금 해제) canLook은 false가 되는 것을 확인햇어요
그리고 판넬이 사라지면 toggle이 false가 되고(마우스 잠금) canLook은 true가 됩니당
문제는,, canLook이 false일 때 마우스는 움직일 수 있으면서 카메라는 못 움직이게 해야 한다는 것 .. !
public class PlayerController : MonoBehaviour
{
...
[Header("Look")]
[SerializeField] private Transform cameraContainer;
private float minXLook = -85f;
private float maxXLook = 85f;
private float camCurXRot;
private float lookSensitivity = 0.2f;
...
private Vector2 mouseDelta;
//[HideInInspector]
//[SerializeField] private bool canLook = true;
private bool canLook = true;
...
private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
...
private void LateUpdate()
{
if (canLook)
{
CameraLook();
}
else
{
Cursor.visible = true;
}
}
...
private void CameraLook()
{
camCurXRot += mouseDelta.y * lookSensitivity;
camCurXRot = Mathf.Clamp(camCurXRot, minXLook, maxXLook);
cameraContainer.localEulerAngles = new Vector3(-camCurXRot, 0, 0);
transform.eulerAngles += new Vector3(0, mouseDelta.x * lookSensitivity, 0);
}
public void OnLookInput(InputAction.CallbackContext context)
{
mouseDelta = context.ReadValue<Vector2>();
}
...
public void ToggleCursor(bool toggle)
{
Cursor.lockState = toggle ? CursorLockMode.None : CursorLockMode.Locked;
canLook = !toggle;
Debug.Log("toggle은 "+toggle+" canLook은 "+canLook);
// PausePanel 활성화 시 마우스 이동 안되게
if (toggle)
{
mouseDelta = Vector2.zero;
}
}
...
}팀장님께 여쭤봤는데 생각보다 어려운(?)건 아니었어요
지금 한 부분에서 canLook 변수만 GameManager로 옮겨주면 되는 간단한 문제였어요 ദ്ദി⁼ˆ╹⥿╹ˆ⁼)
using System.Collections;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
...
//[HideInInspector]
//[SerializeField] private bool canLook = true;
...
private void LateUpdate()
{
if (Main.Game.canLook)
{
CameraLook();
}
}
...
public void ToggleCursor(bool toggle)
{
Cursor.lockState = toggle ? CursorLockMode.None : CursorLockMode.Locked;
Main.Game.canLook = !toggle;
}
...
}using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class GameManager
{
public bool canLook { get; set; } = true;
...
}2. 플레이어 점프 관련 문제 ,,
실린더가 있는 지형에서 실린더 위를 점프하면 점프가 안 되는 현상이 있었워요
이 부분을 튜터님께 여쭤보았는데,
raycast를 쏠 때 지금은 발에서 쏘는데 일부 지형을 지나갈 때 문제가 발생해서,
raycast를 좀 더 위에서(플레이어 몸통 쪽에 가깝게) 쏘도록 변경해서 해결햇습미다 ( •̀∀•́ )✧
3. 이번 주 수업 진도 속도, 강사님의 강의 스타일, 혹은 반 분위기는 어땠나요?
이번 주 역시 늘 그래왓듯이 ,, 🥹
팀원들의 도움을 마구마구 받아서 해냇답니다
4. 다음 주에는 어떤 부분을 보완하고 싶나요?
Raycast와 SoundManager 쪽이 어려웠어요
특히 SoundManager 같은 경우 분명히 Addressable에 등록해놨는데 자꾸 NullReferenceException 에러가 뜨는 문제가 계속 발생해서
한동안 골머리를 앓았거든요 (☍д⁰)
기존 BaseScene의 SoundManager Initiate 코드를 SoundManager 내로 옮기니 해결되긴 했는데,
이걸 100% 이해하려면 오랜 시간이 걸릴 것 같아요 . . .
댓글
댓글이 없습니다.
