
오늘 학습 키워드
최종 팀 프로젝트
오늘 학습 한 내용을 나만의 언어로 정리하기
시네머신 공부
- 시네머신을 써가지고 플레이어를 보게 하는 카메라를 만들고 싶었음
- 그래서 가상 카메라를 만들어서 Follow를 플레이어로 하고 Look At을 None으로 함
- 그리고 폴리곤 콜라이더 만들어서 confiner2D에 연결해줌
public enum ShakeOrder
{
SpecialEffect = 0,
Player = 1,
Monster = 2
}
public class CameraManager : Singleton<CameraManager>
{
private CinemachineVirtualCamera virtualCamera;
private CinemachineBasicMultiChannelPerlin perlin;
private ShakeOrder currentShakeOrder;
private Coroutine shakeCoroutine;
private void Start()
{
virtualCamera = FindFirstObjectByType<CinemachineVirtualCamera>();
if(virtualCamera == null)
{
Debug.LogError("CinemachineVirtualCamera not found in the scene.");
return;
}
perlin = virtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
if (perlin == null)
{
Debug.LogError("CinemachineBasicMultiChannelPerlin component not found on the virtual camera.");
return;
}
}
public void ShakeCamera(float duration, float magnitude, float frequency, ShakeOrder shakeOrder)
{
if (shakeCoroutine == null)
{
currentShakeOrder = shakeOrder;
shakeCoroutine = StartCoroutine(ShakeCameraCoroutine(duration, magnitude, frequency));
}
else
{
if (currentShakeOrder >= shakeOrder)
{
StopCoroutine(shakeCoroutine);
StopCameraShake();
currentShakeOrder = shakeOrder;
Debug.Log($"[카메라] {currentShakeOrder}의 요청에 의해 카메라 흔들림");
shakeCoroutine = StartCoroutine(ShakeCameraCoroutine(duration, magnitude, frequency));
}
}
}
private IEnumerator ShakeCameraCoroutine(float duration, float magnitude, float frequency)
{
perlin.m_AmplitudeGain = magnitude;
perlin.m_FrequencyGain = frequency;
yield return new WaitForSeconds(duration);
StopCameraShake();
shakeCoroutine = null;
}
private void StopCameraShake()
{
perlin.m_AmplitudeGain = 0f;
perlin.m_FrequencyGain = 0f;
}
}스태미나 회복 수식이 잘못 된 듯 하다
- 역으로 스태미나가 많아질 수록 속도가 느려지는 문제 발생
- 수식을 잘못 만든 것 같음


- 이게 맞는듯
커서를 직접 만들자
- 자꾸 커서 로딩하는데 문제가 생겨서 그냥 커서 매니저에서 애초에 커서를 만드는걸로 함
private Transform MakeCursor()
{
GameObject go = new GameObject("InGameCursor");
SpriteRenderer spriteRenderer = go.AddComponent<SpriteRenderer>();
spriteRenderer.sprite = cursorSprite;
spriteRenderer.sortingOrder = 500;
go.SetActive(true);
return go.transform;
}학습하며 겪었던 문제점 & 에러
문제 1
- 문제&에러에 대한 정의
시네머신 카메라용 콜라이더를 만들었는데 그 뒤로 플레이어가 자꾸 떨어졌음
- 해결 방법
폴리곤 콜라이더를 안쓰고 박스 콜라이더를 써서 문제였음
문제 2
- 문제&에러에 대한 정의
자꾸 카메라가 빙글빙글 돔
- 내가 한 시도
콜라이더를 바꿈, Aim을 Composer 말고 Do nothing으로 바꿈
- 해결 방법
애초에 Follow와 Look At 이 같아서 생긴 문제였음.
- 새롭게 알게 된 점
시네머신 카메라에서 Follow가 Look At 방향으로 본다는 것을 잊지 말자!!!