void CheckBurnablePossibilities() { RaycastHit hit; RaycastHit torchHit; Vector3 endPoint = transform.TransformDirection(Vector3.forward); bool rayHitSomething = CastBurnableCheckRay(endPoint, out hit); bool rayHitTorch = CastTorchCheckRay(endPoint, out torchHit); if (rayHitSomething && !rayHitTorch) { //Vector3 point = hit.point; targetBurnable = GetBurnableObject(hit); } else if (rayHitSomething && rayHitTorch && torchHit.distance > hit.distance) { targetBurnable = GetBurnableObject(hit); } else { if (previouslyHitBurnable != null) { previouslyHitBurnable.SetMaterial(fireConfig.BurnableDefaultMaterial); } targetBurnable = null; /*Vector3 point = transform.position + transform.forward * fireConfig.MaxDistance; * point.y = 0f;*/ } DebugRayCast(hit, rayHitSomething); }
Burnable GetBurnableObject(RaycastHit hit) { BurnableCollider burnableItem = hit.collider.GetComponent <BurnableCollider>(); if (previouslyHitBurnable != null && previouslyHitBurnable != burnableItem) { previouslyHitBurnable.SetMaterial(fireConfig.BurnableDefaultMaterial); } if (burnableItem != null) { if ((!burnableItem.Burnable.IsLit && playerHandConfig.hasFire)) { previouslyHitBurnable = burnableItem; burnableItem.SetMaterial(fireConfig.BurnableHighlightMaterial); return(burnableItem.Burnable); } } return(null); }