CapersProject/Assets/02.Scripts/SeeThrough.cs
Nam Tae Gun 9a639c2e54 #23 See Through(씨스루) 기능 추가
+ FlashAndShadowLit 쉐이더에 씨스루 기능 추가
+ FlashAndShadowSeeThroughLit material을 보스 몬스터에게 적용

Closes #23
2024-06-17 08:41:21 +09:00

55 lines
1.7 KiB
C#

using UnityEngine;
namespace BlueWater
{
public class SeeThrough : MonoBehaviour
{
[SerializeField]
private LayerMask _maskLayer;
private Camera _mainCamera;
private Renderer _previousRenderer;
// Hashes
private static readonly int _sizeHash = Shader.PropertyToID("_Size");
private void Start()
{
_mainCamera = CombatCameraManager.Instance.MainCamera;
}
private void Update()
{
if (!_mainCamera) return;
var direction = _mainCamera.transform.position - transform.position;
var ray = new Ray(transform.position, direction.normalized);
if (Physics.Raycast(ray, out var hit, 100f, _maskLayer))
{
var hitRenderer = hit.collider.GetComponentInChildren<Renderer>();
if (!hitRenderer) return;
if (!hitRenderer.material.HasProperty(_sizeHash)) return;
if (_previousRenderer && _previousRenderer != hitRenderer && _previousRenderer.material.HasProperty(_sizeHash))
{
_previousRenderer.material.SetFloat(_sizeHash, 0f);
}
hitRenderer.material.SetFloat(_sizeHash, 0.5f);
_previousRenderer = hitRenderer;
}
else
{
if (!_previousRenderer) return;
if (_previousRenderer.material.HasProperty(_sizeHash))
{
_previousRenderer.material.SetFloat(_sizeHash, 0f);
}
_previousRenderer = null;
}
}
}
}