53 lines
1.3 KiB
C#
53 lines
1.3 KiB
C#
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
public class Obstacle : MonoBehaviour
|
|
{
|
|
public float fallSpeed = 200f;
|
|
public RectTransform robot;
|
|
public float shrink = 20f;
|
|
public string nextScene = "GameOver";
|
|
|
|
private RectTransform rectTransform;
|
|
private bool isHit = false;
|
|
|
|
void Start()
|
|
{
|
|
rectTransform = GetComponent<RectTransform>();
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (isHit) return;
|
|
|
|
// Pád dolù
|
|
rectTransform.anchoredPosition += Vector2.down * fallSpeed * Time.deltaTime;
|
|
|
|
// Detekce dotyku pøes Rect
|
|
Rect obstacleRect = GetWorldRect(rectTransform, shrink);
|
|
Rect robotRect = GetWorldRect(robot, shrink);
|
|
|
|
if (obstacleRect.Overlaps(robotRect))
|
|
{
|
|
isHit = true;
|
|
Invoke("LoadNextScene", 0.5f);
|
|
}
|
|
}
|
|
|
|
Rect GetWorldRect(RectTransform rt, float shrinkAmount = 0f)
|
|
{
|
|
Vector3[] corners = new Vector3[4];
|
|
rt.GetWorldCorners(corners);
|
|
return new Rect(
|
|
corners[0].x + shrinkAmount,
|
|
corners[0].y + shrinkAmount,
|
|
corners[2].x - corners[0].x - shrinkAmount * 2,
|
|
corners[2].y - corners[0].y - shrinkAmount * 2
|
|
);
|
|
}
|
|
|
|
void LoadNextScene()
|
|
{
|
|
SceneManager.LoadScene(nextScene);
|
|
}
|
|
} |