✅ 오늘의 백로그
1. 탐지 아이템 멀티 연동하기
1. 탐지 아이템 멀티 연동
오늘은 본격적으로 탐지 아이템 멀티를 연동해줄 것이다.
통합 씬에서는 당장 테스트가 안되어서 일단 기존에 내가 만든 씬에서 테스트 해보려고 한다!


가이드북을 들었을 때 위치가 이상한 부분 먼저 수정해주었고

귀신이 코 앞에 있는데도 꽃신이랑 복숭아나무가지가 작동을 안한다.. 이유를 모르겠돵 ㅋ
1. 복숭아 가지 멀티 적용
기존 복숭아가지 루틴이 정상적으로 작동되지 않아서 원인이 뭔지 좀 살펴보려고
중간 중간 로그를 다 찍어봤는데
코루틴이 호출 되자마자 바로 정지되는 상황이 있었다.

?? 이유는 모르겠다 분명 멀쩡히 코루틴이 잘 작동했었는데 ㅋ.ㅎ..ㅋ.ㅋ..ㅠ
기존 동작이 작동되지 않는다해도 뭐 알빠없다!!
어차피 멀티하면서 다 갈아끼워질테니까..
그냥 멀티용으로 새롭게 만들어보겠다.
Fusion 2 - 5 - 속성 변경 | Photon Engine
이 섹션에서는 네트워크화된 속성을 사용하여 플레이어의 위치 외에 네트워크를 통해 추가 데이터를 동기화하는 방법을 보여줍니다. NetworkTransform 컴포넌트를 추가하면 NetworkObjects 변환이 동기
doc.photonengine.com
복숭아 나무가지는 Renderer를 수정하는 로직이 있다.
찾아보니 Fusion2 에서 Renderer을 수정하는 메소드가 이미 정의되어 있다고 한다!

공식 문서가 너무 친절하시다ㅠㅠ
(실은 이해는 잘 안되지만 하라는대로 ㄱㄱ... ㅎ..)
[Networked] public bool IsDissolving { get; set; }
[Networked] public int DissolveStartTick { get; set; }
public override void Render()
{
if (!IsDissolving)
return;
int tickElapsed = Runner.Tick - DissolveStartTick;
float seconds = tickElapsed / (float)Runner.SimulationTime;
float v = Mathf.Clamp01(seconds / Mathf.Max(0.0001f, dissolveDuration));
SetDissolve(v);
}
public void SetDissolve(float v)
{
mpb.Clear();
mpb.SetFloat(DissolveID, v);
for (int r = 0; r < peachBranch.Length; r++)
{
var rend = peachBranch[r];
if (!rend) continue;
var mats = rend.sharedMaterials;
for (int i = 0; i < mats.Length; i++)
{
rend.SetPropertyBlock(mpb, i);
}
}
}
- DissolveStartTick : 디졸브를 언제 시작했는지 네트워크로 공유하기 위한 시작 시점
- tick : Fusion 시뮬레이션의 한 번의 네트워크 스텝 번호

코루틴을 없앴더니
아웃라인이 잡혀있어서 꽃잎이 계속 남아있는 것 처럼 보이겠지만..
걍 설치하자마자 바로 꽃잎이 없어져버린다..
private float dissolveDelay = 60f; // 대기 시간
private float dissolveDuration = 60f; // 천천히 사라지게 큰 값
public override void Render()
{
if (!IsDissolving)
return;
int tickElapsed = Runner.Tick - DissolveStartTick;
float elapsedSeconds = tickElapsed * Runner.DeltaTime;
// Delay 적용 후 0~1로 클램프
float t = (elapsedSeconds - dissolveDelay) / Mathf.Max(0.0001f, dissolveDuration);
t = Mathf.Clamp01(t);
SetDissolve(t);
}
그래서 대기 시간을 추가해줘서
대기 시간이 다 지나지 않으면 셰이더 효과가 나타나지 않도록 해주었다.

흠 근데 괜히 셰이더 효과를 줘서 사라지는 게 너무 잘 보이나 싶다........ 내가 원한 건 이게 아니긴 한데...

그래서 Dissolve 색상을 바꾸면 되지 않을까? 싶어서 또 셰이더 내부를 보고 있었는데
EdgeColor가 파라미터로 있는데 타입만 지정되어있구 값을 바꾸는 부분이 없다..??

이 값을 어디서 바꿔주고 있는지 한참 찾다가
부모 그래프로 가봤더니 여기서 설정해주고 있었다..!
멍청하게 자식 그래프만 열라 뒤졌었네 하하..
흠 근데도 안된다
왜지
static readonly int EdgeColorID = Shader.PropertyToID("_EdgeColor");
public void SetDissolve(float v)
{
mpb.Clear();
mpb.SetFloat(DissolveID, v);
mpb.SetColor(EdgeColorID, new Color(255f, 0f, 0f));
for (int r = 0; r < peachBranch.Length; r++)
{
var rend = peachBranch[r];
if (!rend) continue;
var mats = rend.sharedMaterials;
for (int i = 0; i < mats.Length; i++)
{
rend.SetPropertyBlock(mpb, i);
}
}
}
하지만 괜찮다!
컬러 프로퍼티 값이 뭔지 알아왔으니 ㅋ
스크립트에서 바꿔줘버리지 뭐!!

뻘겋게 바꾸기 완료

색을 완전히 다 없애고 멀티도 확인해봤는데 정상적으로 잘 작동됐다!!
2. 끝나지 않은 멀티 지옥 (꽃신편)
기존 로직이 동작 안됐던 이유는
귀신 로직이 싱글톤으로 바뀌면서 나도 스크립트를 조금 수정해주어야 했는데
안해줘서 제대로 동작을 안 하는 거였다.
그리고 코루틴이 복숭아 가지 할 때 보니까 좀 위험한 거 같아서
코루틴은 완전히 없애고 멀티 동기화 작업을 해주었다.

테스트 하려고 보니까 꽃신이 NavMesh 위에 없다고 로직 실행이 안되고 있었다.

콜라이더가 문제인가.. 베이크가 잘못됐나.. 한참을 원인이 무엇인지 찾아보다가
결국 해결을 못해서 전에 팀원분 중 한명이 NavMesh로 문제를 겪으셨어서
혹시 동일한 문제일까 싶어 여쭤보았다.
동일한 문제는 아니었지만!
Agent Type이 달라서 그럴 수 있다고 말씀해주셔서 원인을 찾을 수 있었다 야호!
using Fusion;
using UnityEngine;
public class FlowerShoesSound : NetworkBehaviour
{
private AudioSource audioSource;
void Awake()
{
if (!audioSource) audioSource = GetComponent<AudioSource>();
audioSource.spatialBlend = 1f;
audioSource.playOnAwake = false;
}
/// <summary>
/// 애니메이션에 맞게 사운드 이벤트 호출
/// </summary>
public void PlayFlowerShoesSfx()
{
if (Object && Object.HasStateAuthority)
RpcPlaySfx();
}
[Rpc(RpcSources.StateAuthority, RpcTargets.All)]
private void RpcPlaySfx()
{
if (audioSource) audioSource.Play();
}
}
발 소리가 동기화되지 않길래 발소리도 멀티 연동해주었고

이제 위치 동기화, 소리 동기화 모두 완료되었는데
애니메이션 실행 속도가 좀 차이나면서 소리도 약간 차이나는 문제가 있었다.
근데 이건 뭐 고치지 않아도 클라끼리 모를정도의 수준이라 큰 문제 없을 거 같아서 당장은 무시해줄 건데..
더 큰 문제는 NavMesh가 그냥 바닥면 전체에 다 깔려있기 때문에
저렇게 장애물이 있어도 그냥 쏙 들어가버린다
아니 장애물에도 콜라이더가 있고
내 꽃신에도 콜라이더가 있고
Is Trigger가 체크되어 있지도 않은데 왜 통과가 될까..?? 허허
그리고 웃긴건 저기 들어간 후로 나오질 않아 멍청한 Agent

목적지 위치까지 못가서 저렇게 바보가 된건가 싶기도하고..
콜라이더를 뚫고 들어가는 거는 아무래도 애니메이션이 움직이면서 콜라이더 바깥으로 신발 자체가 빠져나가니까 그런 거 같다는 생각이 든다
우선 오늘은 여기까지 마무리를 하고
내일 꽃신 로직을 좀 수정해주고
무당 방울까지 연동 해주면 아이템 연동은 끝!
'Unity > 멋쟁이사자처럼 부트캠프' 카테고리의 다른 글
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(114일차/Final Project) - 버그 수정 (0) | 2025.11.10 |
|---|---|
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(113일차/Final Project) - 탐지 아이템 멀티 연동 (2) (0) | 2025.11.07 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(111일차/Final Project) - 부적 연동 & 스포너 로직 수정 (0) | 2025.11.05 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(110일차/Final Project) - 오브젝트풀 멀티 연동 (0) | 2025.11.04 |
| [멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(109일차/Final Project) - 에셋 적용 & 스포너 로직 수정 (0) | 2025.11.03 |