besoin : - quand une unité meurt, la prochaine unité n'est pas targetted solution : - deactivate and reactivate collider to re-trigger collision
88 lines
2.6 KiB
C#
88 lines
2.6 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
/// <summary>
|
|
/// Handles what happens when the user clicks on a collider
|
|
/// </summary>
|
|
public class ClickBehavior : MonoBehaviour
|
|
{
|
|
|
|
private float unpausedTime = 1f;
|
|
|
|
private void Update()
|
|
{
|
|
Vector2 clickPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
|
|
|
if (Input.GetMouseButton(0))
|
|
{
|
|
List<Collider2D> listColliders = new(Physics2D.OverlapCircleAll(clickPoint, 0.05f));
|
|
List<Collider2D> resourceColliders = listColliders.FindAll(obj => obj.CompareTag("Resource"));
|
|
if (resourceColliders.Count > 0)
|
|
{
|
|
foreach (Collider2D collider in resourceColliders)
|
|
{
|
|
collider.GetComponent<ResourceMaker>().ClickOnResource();
|
|
}
|
|
|
|
}
|
|
}
|
|
#if UNITY_EDITOR
|
|
if (Input.GetMouseButtonUp(0))
|
|
{
|
|
const float clickRangeForSpawn = 0.7f;
|
|
var spawners = LevelManager.Instance.GetAll<SpawnerTile>();
|
|
var closest = spawners.Minimum(spawn => Vector2.Distance(spawn.Position, transform.position));
|
|
var distance = Vector2.Distance(clickPoint, closest.Position);
|
|
|
|
if (distance < clickRangeForSpawn)
|
|
{
|
|
closest.TriggerSpawnDebug();
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|
|
public void ChangeGameSpeed()
|
|
{
|
|
if (Time.timeScale != 0f)
|
|
{
|
|
if (Time.timeScale == 1f)
|
|
{
|
|
GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.yellow;
|
|
Time.timeScale = 1.5f;
|
|
}
|
|
else
|
|
{
|
|
GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.white;
|
|
Time.timeScale = 1f;
|
|
}
|
|
unpausedTime = Time.timeScale;
|
|
}
|
|
}
|
|
|
|
public void StopGame()
|
|
{
|
|
if (Time.timeScale != 0f)
|
|
{
|
|
unpausedTime = Time.timeScale;
|
|
GameObject.Find("btn_pause").GetComponent<Button>().image.color = Color.black;
|
|
Time.timeScale = 0f;
|
|
}
|
|
else
|
|
{
|
|
GameObject.Find("btn_pause").GetComponent<Button>().image.color = Color.white;
|
|
Time.timeScale = unpausedTime;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Remet la vitesse de jeux a son etat normal lorsque le dernier ennemi est mort, si necessaire
|
|
/// </summary>
|
|
public static void ResetGameSpeed()
|
|
{
|
|
GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.white;
|
|
Time.timeScale = 1f;
|
|
}
|
|
|
|
}
|