Square.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Square : MonoBehaviour
{
public Vector2 targetPosition;
public float moveStep;
public bool isTrap;
public float speedFactor;
public float scaleFactor;
public int catchCount;
void Start()
{
if (isTrap == false)
{
Player.squares.Add(this);
}
targetPosition = GetRandomPoint();
}
void Update()
{
transform.position = Vector2.MoveTowards(transform.position,
targetPosition, moveStep * Time.deltaTime);
if((Vector2)transform.position == targetPosition)
{
targetPosition = GetRandomPoint();
}
}
Vector2 GetRandomPoint()
{
Vector2 randomVector = new Vector2();
randomVector.x = Random.Range(-6, 6);
randomVector.y = Random.Range(-3, 3);
return randomVector;
}
void OnMouseDown()
{
if (isTrap)
{
Player.Defeat();
}
else
{
Catch();
}
}
void Catch()
{
Player.score++;
catchCount--;
if (catchCount == 0)
{
Player.squares.Remove(this);
Destroy(gameObject);
}
else
{
moveStep += speedFactor;
transform.localScale = (Vector2)transform.localScale - new Vector2(scaleFactor, scaleFactor);
transform.position = GetRandomPoint();
}
}
}
Player.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Player : MonoBehaviour
{
public static List<Square> squares;
public static int score = 0;
void Awake()
{
squares = new List<Square>();
}
void Update()
{
if (squares.Count == 0)
{
Victory();
}
}
public static void Defeat()
{
score = 0;
UI.ShowDefeatPanel();
}
public static void Victory()
{
UI.ShowVictoryPanel();
}
public static void Restart()
{
int index = SceneManager.GetActiveScene().buildIndex;
SceneManager.LoadScene(index);
}
}
UI.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UI : MonoBehaviour
{
static UI singleton;
public Text scoreText;
public GameObject panel;
public Text panelScoreText;
public Text defeatText;
public Text victoryText;
void Awake()
{
singleton = this;
}
void Update()
{
scoreText.text = Player.score.ToString();
}
public static void ShowVictoryPanel()
{
singleton.panel.SetActive(true);
singleton.victoryText.gameObject.SetActive(true);
singleton.panelScoreText.text = Player.score.ToString();
}
public static void ShowDefeatPanel()
{
singleton.panel.SetActive(true);
singleton.defeatText.gameObject.SetActive(true);
singleton.panelScoreText.text = Player.score.ToString();
}
public void OnClickRestart()
{
Player.Restart();
}
}