71 lines
1.4 KiB
C#
71 lines
1.4 KiB
C#
using System;
|
|
using UFS2.Definitions;
|
|
using UnityEngine;
|
|
|
|
namespace UFS2.Gameplay
|
|
{
|
|
public class FishScanner : MonoBehaviour
|
|
{
|
|
public enum HitType
|
|
{
|
|
none = 0,
|
|
wall = 1,
|
|
water = 2,
|
|
waypoint = 3,
|
|
bait = 4,
|
|
fish = 5
|
|
}
|
|
|
|
public RaycastHit LastHit;
|
|
|
|
private float seeDistance = 15f;
|
|
|
|
private float sphereRadius => sphereRadius;
|
|
|
|
public event Action<HitType, RaycastHit> OnHit;
|
|
|
|
public void ScannerUpdate()
|
|
{
|
|
float radius = 1.5f;
|
|
int mask = LayerMask.GetMask(Layers.BaitLure);
|
|
if (Physics.SphereCast(base.transform.position, radius, base.transform.forward, out var hitInfo, seeDistance, mask))
|
|
{
|
|
HitType arg = HitType.none;
|
|
if (hitInfo.transform.CompareTag(Tags.BaitLure))
|
|
{
|
|
arg = HitType.bait;
|
|
}
|
|
if (hitInfo.transform.CompareTag(Tags.FishTarget))
|
|
{
|
|
arg = HitType.waypoint;
|
|
}
|
|
if (hitInfo.transform.gameObject.layer == LayerMask.GetMask(Layers.WaterObject))
|
|
{
|
|
arg = HitType.wall;
|
|
}
|
|
LastHit = hitInfo;
|
|
this.OnHit?.Invoke(arg, hitInfo);
|
|
}
|
|
}
|
|
|
|
public void DeepCheckerRaycast()
|
|
{
|
|
float maxDistance = float.PositiveInfinity;
|
|
float num = 0.5f;
|
|
int mask = LayerMask.GetMask("Water");
|
|
if (Physics.Raycast(base.transform.position, Vector3.down, out var hitInfo, maxDistance, mask))
|
|
{
|
|
_ = hitInfo.distance;
|
|
}
|
|
}
|
|
|
|
public void WaterCheckerRaycast()
|
|
{
|
|
}
|
|
|
|
private void OnDrawGizmos()
|
|
{
|
|
}
|
|
}
|
|
}
|