Made only X dir count as off-screen

This commit is contained in:
Pasha Bibko
2026-04-21 10:20:15 +01:00
parent 76477ab193
commit 30a743cdbf
3 changed files with 22 additions and 19 deletions

View File

@@ -2708,7 +2708,7 @@ RectTransform:
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -980}
m_SizeDelta: {x: 3840, y: 200}
m_SizeDelta: {x: 6000, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!61 &2112507920
BoxCollider2D:

View File

@@ -1,6 +1,8 @@
using System.Numerics;
using Fruitomation.Global;
using PashaBibko.Pacore.Attributes;
using UnityEngine;
using Vector3 = UnityEngine.Vector3;
namespace Fruitomation.Game.Items
{
@@ -72,16 +74,13 @@ namespace Fruitomation.Game.Items
private void FixedUpdate()
{
bool contained = IsWithinCanvas(RectTransform, AttachedCanvas.GetComponent<RectTransform>());
EnteredCanvas = EnteredCanvas || contained;
if (!contained && EnteredCanvas)
if (IsNotWithinCanvas(RectTransform, AttachedCanvas.GetComponent<RectTransform>()))
{
TriggerDestruction();
}
}
private static bool IsWithinCanvas(RectTransform element, RectTransform canvas)
private static bool IsNotWithinCanvas(RectTransform element, RectTransform canvas)
{
Vector3[] elementCorners = new Vector3[4];
Vector3[] canvasCorners = new Vector3[4];
@@ -89,23 +88,27 @@ namespace Fruitomation.Game.Items
element.GetWorldCorners(elementCorners);
canvas.GetWorldCorners(canvasCorners);
Rect bounds = new
(
canvasCorners[0].x,
canvasCorners[0].y,
canvasCorners[2].x - canvasCorners[0].x,
canvasCorners[2].y - canvasCorners[0].y
);
float aMin = float.MaxValue;
float aMax = float.MinValue;
foreach (Vector3 corner in canvasCorners)
{
aMin = Mathf.Min(aMin, corner.x);
aMax = Mathf.Max(aMax, corner.x);
}
float bMin = float.MaxValue;
float bMax = float.MinValue;
foreach (Vector3 corner in elementCorners)
{
if (bounds.Contains(corner))
{
return true;
}
bMin = Mathf.Min(bMin, corner.x);
bMax = Mathf.Max(bMax, corner.x);
}
return false;
return
!(bMin > (aMin - 1f)) ||
!(bMax < (aMax + 1f));
}
public void TriggerDestruction(bool harvest = true)

View File

@@ -17,7 +17,7 @@ TagManager:
-
- Buildings
- Items
-
- BuildingNoRaycast
-
-
-