Made clicking harvest the fruit
This commit is contained in:
@@ -10,7 +10,9 @@ GameObject:
|
|||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 5459288295520796107}
|
- component: {fileID: 5459288295520796107}
|
||||||
- component: {fileID: 7354729621375102571}
|
- component: {fileID: 7354729621375102571}
|
||||||
- component: {fileID: 1864694910910877678}
|
- component: {fileID: 4856511816064388395}
|
||||||
|
- component: {fileID: 1572770211658593958}
|
||||||
|
- component: {fileID: 1030068666342984902}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Sprite
|
m_Name: Sprite
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -45,7 +47,7 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 2456106081754027966}
|
m_GameObject: {fileID: 2456106081754027966}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
--- !u!114 &1864694910910877678
|
--- !u!114 &4856511816064388395
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
@@ -75,6 +77,95 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &1572770211658593958
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2456106081754027966}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Navigation:
|
||||||
|
m_Mode: 3
|
||||||
|
m_WrapAround: 0
|
||||||
|
m_SelectOnUp: {fileID: 0}
|
||||||
|
m_SelectOnDown: {fileID: 0}
|
||||||
|
m_SelectOnLeft: {fileID: 0}
|
||||||
|
m_SelectOnRight: {fileID: 0}
|
||||||
|
m_Transition: 1
|
||||||
|
m_Colors:
|
||||||
|
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||||
|
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||||
|
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||||
|
m_ColorMultiplier: 1
|
||||||
|
m_FadeDuration: 0.1
|
||||||
|
m_SpriteState:
|
||||||
|
m_HighlightedSprite: {fileID: 0}
|
||||||
|
m_PressedSprite: {fileID: 0}
|
||||||
|
m_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 4856511816064388395}
|
||||||
|
m_OnClick:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!61 &1030068666342984902
|
||||||
|
BoxCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2456106081754027966}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_ForceSendLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ForceReceiveLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ContactCaptureLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_CallbackLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_UsedByComposite: 0
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_SpriteTilingProperty:
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
pivot: {x: 0, y: 0}
|
||||||
|
oldSize: {x: 0, y: 0}
|
||||||
|
newSize: {x: 0, y: 0}
|
||||||
|
adaptiveTilingThreshold: 0
|
||||||
|
drawMode: 0
|
||||||
|
adaptiveTiling: 0
|
||||||
|
m_AutoTiling: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Size: {x: 100, y: 100}
|
||||||
|
m_EdgeRadius: 0
|
||||||
--- !u!1 &8732739964968511634
|
--- !u!1 &8732739964968511634
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -86,7 +177,6 @@ GameObject:
|
|||||||
- component: {fileID: 3605213539719865219}
|
- component: {fileID: 3605213539719865219}
|
||||||
- component: {fileID: 1754222534141843334}
|
- component: {fileID: 1754222534141843334}
|
||||||
- component: {fileID: 5645363082347469150}
|
- component: {fileID: 5645363082347469150}
|
||||||
- component: {fileID: 8128872912203902378}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Fruit
|
m_Name: Fruit
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -128,6 +218,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
RectTransform: {fileID: 3605213539719865219}
|
RectTransform: {fileID: 3605213539719865219}
|
||||||
Body2D: {fileID: 5645363082347469150}
|
Body2D: {fileID: 5645363082347469150}
|
||||||
|
Button: {fileID: 1572770211658593958}
|
||||||
AttachedCanvas: {fileID: 0}
|
AttachedCanvas: {fileID: 0}
|
||||||
EnteredCanvas: 0
|
EnteredCanvas: 0
|
||||||
--- !u!50 &5645363082347469150
|
--- !u!50 &5645363082347469150
|
||||||
@@ -157,48 +248,3 @@ Rigidbody2D:
|
|||||||
m_SleepingMode: 1
|
m_SleepingMode: 1
|
||||||
m_CollisionDetection: 1
|
m_CollisionDetection: 1
|
||||||
m_Constraints: 0
|
m_Constraints: 0
|
||||||
--- !u!61 &8128872912203902378
|
|
||||||
BoxCollider2D:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 8732739964968511634}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_Density: 1
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_IncludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_ExcludeLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 0
|
|
||||||
m_LayerOverridePriority: 0
|
|
||||||
m_ForceSendLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ForceReceiveLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_ContactCaptureLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_CallbackLayers:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_IsTrigger: 0
|
|
||||||
m_UsedByEffector: 0
|
|
||||||
m_UsedByComposite: 0
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_SpriteTilingProperty:
|
|
||||||
border: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
pivot: {x: 0, y: 0}
|
|
||||||
oldSize: {x: 0, y: 0}
|
|
||||||
newSize: {x: 0, y: 0}
|
|
||||||
adaptiveTilingThreshold: 0
|
|
||||||
drawMode: 0
|
|
||||||
adaptiveTiling: 0
|
|
||||||
m_AutoTiling: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Size: {x: 100, y: 100}
|
|
||||||
m_EdgeRadius: 0
|
|
||||||
|
|||||||
@@ -1,59 +1,76 @@
|
|||||||
using PashaBibko.Pacore.Attributes;
|
using PashaBibko.Pacore.Attributes;
|
||||||
|
using UnityEngine.UI;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public class FruitBehaviour : MonoBehaviour
|
namespace Fruitomation
|
||||||
{
|
{
|
||||||
[Header("References")]
|
public class FruitBehaviour : MonoBehaviour
|
||||||
[SerializeField] private RectTransform RectTransform;
|
|
||||||
[SerializeField] private Rigidbody2D Body2D;
|
|
||||||
|
|
||||||
[Header("Read only")]
|
|
||||||
[InspectorReadOnly, SerializeField] private Canvas AttachedCanvas;
|
|
||||||
[InspectorReadOnly, SerializeField] private bool EnteredCanvas;
|
|
||||||
|
|
||||||
public void InitFruitBehaviour(Canvas canvas)
|
|
||||||
{
|
{
|
||||||
AttachedCanvas = canvas;
|
[Header("References")] [SerializeField]
|
||||||
EnteredCanvas = false;
|
private RectTransform RectTransform;
|
||||||
|
|
||||||
Body2D.velocity = Random.insideUnitCircle * 2.5f;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsWithinCanvas(RectTransform element, RectTransform canvas)
|
[SerializeField] private Rigidbody2D Body2D;
|
||||||
{
|
[SerializeField] private Button Button;
|
||||||
Vector3[] elementCorners = new Vector3[4];
|
|
||||||
Vector3[] canvasCorners = new Vector3[4];
|
|
||||||
|
|
||||||
element.GetWorldCorners(elementCorners);
|
|
||||||
canvas.GetWorldCorners(canvasCorners);
|
|
||||||
|
|
||||||
Rect bounds = new
|
[Header("Read only")]
|
||||||
(
|
[InspectorReadOnly, SerializeField] private Canvas AttachedCanvas;
|
||||||
canvasCorners[0].x,
|
[InspectorReadOnly, SerializeField] private FruitSpawner Spawner;
|
||||||
canvasCorners[0].y,
|
[InspectorReadOnly, SerializeField] private bool EnteredCanvas;
|
||||||
canvasCorners[2].x - canvasCorners[0].x,
|
|
||||||
canvasCorners[2].y - canvasCorners[0].y
|
|
||||||
);
|
|
||||||
|
|
||||||
foreach (Vector3 corner in elementCorners)
|
public void InitFruitBehaviour(Canvas canvas, FruitSpawner spawner)
|
||||||
{
|
{
|
||||||
if (bounds.Contains(corner))
|
AttachedCanvas = canvas;
|
||||||
|
EnteredCanvas = false;
|
||||||
|
Spawner = spawner;
|
||||||
|
|
||||||
|
Body2D.velocity = Random.insideUnitCircle * 2.5f;
|
||||||
|
|
||||||
|
Button.onClick.AddListener(OnPlayerClicked);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnPlayerClicked() => TriggerDestruction();
|
||||||
|
|
||||||
|
private void FixedUpdate()
|
||||||
|
{
|
||||||
|
bool contained = IsWithinCanvas(RectTransform, AttachedCanvas.GetComponent<RectTransform>());
|
||||||
|
EnteredCanvas = EnteredCanvas || contained;
|
||||||
|
|
||||||
|
if (!contained && EnteredCanvas)
|
||||||
{
|
{
|
||||||
return true;
|
TriggerDestruction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
private void TriggerDestruction()
|
||||||
}
|
|
||||||
|
|
||||||
private void FixedUpdate()
|
|
||||||
{
|
|
||||||
bool contained = IsWithinCanvas(RectTransform, AttachedCanvas.GetComponent<RectTransform>());
|
|
||||||
EnteredCanvas = EnteredCanvas || contained;
|
|
||||||
|
|
||||||
if (!contained && EnteredCanvas)
|
|
||||||
{
|
{
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool IsWithinCanvas(RectTransform element, RectTransform canvas)
|
||||||
|
{
|
||||||
|
Vector3[] elementCorners = new Vector3[4];
|
||||||
|
Vector3[] canvasCorners = new Vector3[4];
|
||||||
|
|
||||||
|
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
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach (Vector3 corner in elementCorners)
|
||||||
|
{
|
||||||
|
if (bounds.Contains(corner))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@ namespace Fruitomation
|
|||||||
|
|
||||||
behaviour.InitFruitBehaviour
|
behaviour.InitFruitBehaviour
|
||||||
(
|
(
|
||||||
GameCanvas
|
GameCanvas, this
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user