33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
using UnityEngine;
|
|
using Unity.Netcode;
|
|
|
|
public class FogOfWarManager : MonoBehaviour
|
|
{
|
|
public static FogOfWarManager Instance;
|
|
|
|
[Header("Settings")]
|
|
public RenderTexture fogMaskTexture; // 쉐이더에 전달될 텍스처
|
|
public Material fogMaterial; // 검은 안개 머티리얼
|
|
public float revealRadius = 5f; // 밝혀지는 반경
|
|
|
|
void Awake() => Instance = this;
|
|
|
|
void Update()
|
|
{
|
|
// 멀티플레이어이므로 로컬 플레이어(IsOwner)의 위치만 마스크에 그립니다.
|
|
if (NetworkManager.Singleton.LocalClient != null)
|
|
{
|
|
var localPlayer = NetworkManager.Singleton.LocalClient.PlayerObject;
|
|
if (localPlayer != null)
|
|
{
|
|
UpdateFogMask(localPlayer.transform.position);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void UpdateFogMask(Vector3 playerPos)
|
|
{
|
|
// 플레이어의 월드 좌표를 텍스처 좌표로 변환하여
|
|
// 해당 지점의 알파값을 0(투명)으로 깎아내는 로직 (Compute Shader나 GPU 가속 권장)
|
|
}
|
|
} |