구글 플레이스토어 등록 방법 구체적으로 정리하기
아이콘 추가
ios 빌드 알아보기
나무에 플레이어가 가려지는 이슈 해결하기 2트
플레이어 추락 상태 구현하기
public class ChangeMaterials : MonoBehaviour
{
public Material[] fadeMaterials = new Material[2];
public Material[] originMaterials = new Material[2];
private Material[] _materials;
private MeshRenderer _meshRenderer;
private void Awake()
{
_meshRenderer = GetComponentInChildren<MeshRenderer>();
_materials = _meshRenderer.materials;
}
public void ChangeFadeMaterials()
{
for (int i = 0; i < _materials.Length; i++)
{
_materials[i] = fadeMaterials[i];
}
_meshRenderer.materials = _materials;
}
public void ReturnMaterials()
{
for (int i = 0; i < _materials.Length; i++)
{
_materials[i] = originMaterials[i];
}
_meshRenderer.materials = _materials;
}
}
public class RaycastToChangeMaterials : MonoBehaviour
{
[SerializeField]
private LayerMask _layerMask;
[SerializeField]
private Camera _camera;
[SerializeField]
private Transform _player;
private RaycastHit[] _hits = new RaycastHit[10];
private HashSet<ChangeMaterials> _prevChangeMaterials = new();
private HashSet<ChangeMaterials> _curruentChangeMaterials = new();
private void Start()
{
StartCoroutine(CheckPlayer());
}
private IEnumerator CheckPlayer()
{
while (Managers.Game.Player == null)
{
yield return null;
}
_player = Managers.Game.Player.ViewPoint;
}
private void FixedUpdate()
{
if (_player != null)
{
CheckForObjects();
}
}
private void CheckForObjects()
{
//이전 프레임에 담기는 리스트, 이번 프레임에 담기는 리스트의 차이가 있는 오브젝트에 ReturnMaterials 호출
_prevChangeMaterials = _curruentChangeMaterials;
_curruentChangeMaterials = new();
int hits = Physics.RaycastNonAlloc(_camera.transform.position, (_player.transform.position - _camera.transform.position).normalized, _hits,
Vector3.Distance(_camera.transform.position, _player.transform.position), _layerMask);
if (hits >= 0)
{
// hashset
for (int i = 0; i < hits; i++)
{
ChangeMaterials changeMaterials = _hits[i].transform.gameObject.GetComponentInParent<ChangeMaterials>();
_curruentChangeMaterials.Add(changeMaterials);
changeMaterials.ChangeFadeMaterials();
}
_prevChangeMaterials.ExceptWith(_curruentChangeMaterials);
foreach (var hit in _prevChangeMaterials)
hit.transform.gameObject.GetComponentInParent<ChangeMaterials>().ReturnMaterials();
}
}
}
오브젝트 투명화 시스템을 수정 중입니다.
1차적으로 오브젝트 투명화 시스템을 구현하였습니다.