Made clicking harvest the fruit
This commit is contained in:
@@ -10,7 +10,9 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 5459288295520796107}
|
||||
- component: {fileID: 7354729621375102571}
|
||||
- component: {fileID: 1864694910910877678}
|
||||
- component: {fileID: 4856511816064388395}
|
||||
- component: {fileID: 1572770211658593958}
|
||||
- component: {fileID: 1030068666342984902}
|
||||
m_Layer: 0
|
||||
m_Name: Sprite
|
||||
m_TagString: Untagged
|
||||
@@ -45,7 +47,7 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2456106081754027966}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1864694910910877678
|
||||
--- !u!114 &4856511816064388395
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@@ -75,6 +77,95 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
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
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -86,7 +177,6 @@ GameObject:
|
||||
- component: {fileID: 3605213539719865219}
|
||||
- component: {fileID: 1754222534141843334}
|
||||
- component: {fileID: 5645363082347469150}
|
||||
- component: {fileID: 8128872912203902378}
|
||||
m_Layer: 0
|
||||
m_Name: Fruit
|
||||
m_TagString: Untagged
|
||||
@@ -128,6 +218,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
RectTransform: {fileID: 3605213539719865219}
|
||||
Body2D: {fileID: 5645363082347469150}
|
||||
Button: {fileID: 1572770211658593958}
|
||||
AttachedCanvas: {fileID: 0}
|
||||
EnteredCanvas: 0
|
||||
--- !u!50 &5645363082347469150
|
||||
@@ -157,48 +248,3 @@ Rigidbody2D:
|
||||
m_SleepingMode: 1
|
||||
m_CollisionDetection: 1
|
||||
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 UnityEngine.UI;
|
||||
using UnityEngine;
|
||||
|
||||
public class FruitBehaviour : MonoBehaviour
|
||||
namespace Fruitomation
|
||||
{
|
||||
[Header("References")]
|
||||
[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)
|
||||
public class FruitBehaviour : MonoBehaviour
|
||||
{
|
||||
AttachedCanvas = canvas;
|
||||
EnteredCanvas = false;
|
||||
[Header("References")] [SerializeField]
|
||||
private RectTransform RectTransform;
|
||||
|
||||
Body2D.velocity = Random.insideUnitCircle * 2.5f;
|
||||
}
|
||||
[SerializeField] private Rigidbody2D Body2D;
|
||||
[SerializeField] private Button Button;
|
||||
|
||||
private static bool IsWithinCanvas(RectTransform element, RectTransform canvas)
|
||||
{
|
||||
Vector3[] elementCorners = new Vector3[4];
|
||||
Vector3[] canvasCorners = new Vector3[4];
|
||||
[Header("Read only")]
|
||||
[InspectorReadOnly, SerializeField] private Canvas AttachedCanvas;
|
||||
[InspectorReadOnly, SerializeField] private FruitSpawner Spawner;
|
||||
[InspectorReadOnly, SerializeField] private bool EnteredCanvas;
|
||||
|
||||
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)
|
||||
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 FixedUpdate()
|
||||
{
|
||||
bool contained = IsWithinCanvas(RectTransform, AttachedCanvas.GetComponent<RectTransform>());
|
||||
EnteredCanvas = EnteredCanvas || contained;
|
||||
|
||||
if (!contained && EnteredCanvas)
|
||||
private void TriggerDestruction()
|
||||
{
|
||||
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
|
||||
(
|
||||
GameCanvas
|
||||
GameCanvas, this
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user