look like Tamagotchi so cute !!
MR.GoodJoy
Creator of
Recent community posts
Code from Coder
Also, here's some code for enemy line of sight that detects players and makes it a boolean
using UnityEngine;
public class LineOfSight : MonoBehaviour
{
public float viewRadius;
public float viewAngle;
public LayerMask obstacleMask;
public bool canSeePlayer;
private GameObject playerObject;
private Transform player;
private Hiding playerhide;
void Start()
{
playerObject = GameObject.FindGameObjectWithTag("Player");
playerhide = playerObject.GetComponent<Hiding>();
player = playerObject.transform;
}
void Update()
{
DetectPlayer();
}
void DetectPlayer()
{
canSeePlayer = false;
if (player != null)
{
Vector3 dirToPlayer = (player.position - transform.position).normalized;
float distToPlayer = Vector3.Distance(transform.position, player.position);
if (distToPlayer < viewRadius)
{
float angleBetween = Vector3.Angle(transform.up, dirToPlayer);
if (angleBetween < viewAngle / 2f)
{
if (!Physics2D.Raycast(transform.position, dirToPlayer, distToPlayer, obstacleMask))
{
if (!playerhide.hiding)
{
canSeePlayer = true;
}
}
}
}
}
}
void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, viewRadius);
Vector3 rightBoundary = DirFromAngle(viewAngle / 2f, false);
Vector3 leftBoundary = DirFromAngle(-viewAngle / 2f, false);
Gizmos.color = Color.blue;
Gizmos.DrawLine(transform.position, transform.position + rightBoundary * viewRadius);
Gizmos.DrawLine(transform.position, transform.position + leftBoundary * viewRadius);
if (Application.isPlaying && canSeePlayer)
{
Gizmos.color = Color.red;
Gizmos.DrawLine(transform.position, player.position);
}
}
Vector3 DirFromAngle(float angleInDegrees, bool angleIsGlobal)
{
if (!angleIsGlobal)
angleInDegrees += transform.eulerAngles.z;
angleInDegrees += 90f;
return new Vector3(Mathf.Cos(angleInDegrees * Mathf.Deg2Rad), Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), 0);
}
}


