Files
ClickRPG/Assets/Scripts/ClickController.cs
2025-10-04 12:25:29 +01:00

70 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class ClickController : MonoBehaviour
{
[SerializeField] private LayerMask layerMask;
void Update ()
{
if (Mouse.current.rightButton.wasPressedThisFrame)
Click();
}
void Click ()
{
Vector2 mousePos = Mouse.current.position.ReadValue();
Ray ray = Camera.main.ScreenPointToRay(mousePos);
RaycastHit hit;
// Shoot a raycast from our mouse to what ever we are pointing at.
if (Physics.Raycast(ray, out hit, 1000, layerMask))
{
int hitLayer = hit.collider.gameObject.layer;
// Did we hit the GROUND?
if (hitLayer == LayerMask.NameToLayer("Ground"))
{
Debug.Log("Ground Clicked");
Player.Current.SetTarget(null);
Player.Current.Controller.MoveToPosition(hit.point);
}
// Did we hit an ENEMY?
else if (hitLayer == LayerMask.NameToLayer("Enemy"))
{
Debug.Log("Enemy Clicked");
Character enemy = hit.collider.GetComponent<Character>();
Player.Current.SetTarget(enemy);
}
else if (hitLayer == LayerMask.NameToLayer("Interactable"))
{
Debug.Log("Interactable Clicked");
if (hit.collider.TryGetComponent(out Enemy enemy))
{
Debug.Log("Enemy Clicked");
//Character enemy = hit.collider.GetComponent<Character>();
Player.Current.SetTarget(enemy);
}
else if (hit.collider.TryGetComponent(out NPC npc))
{
Debug.Log("NPC Clicked");
Player.Current.SetTarget(npc);
npc.Interact();
return;
}
else
{
Debug.Log("Something Else Clicked");
Player.Current.SetTarget(null);
}
}
else
{
Debug.Log("Something Else Clicked");
Player.Current.SetTarget(null);
}
}
}
}