Made presser properly press

This commit is contained in:
2026-04-22 00:11:59 +01:00
parent 289396c0ea
commit 6ed8a1fe85
3 changed files with 153 additions and 39 deletions

View File

@@ -1,5 +1,100 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1570872871484658396
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8817646919675700749}
- component: {fileID: 6499977455909793586}
- component: {fileID: 8140780552350643576}
m_Layer: 0
m_Name: AOE
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8817646919675700749
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1570872871484658396}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3484520099208115360}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!61 &6499977455909793586
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1570872871484658396}
m_Enabled: 1
serializedVersion: 3
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: 1
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 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
m_Size: {x: 150, y: 110}
m_EdgeRadius: 0
--- !u!114 &8140780552350643576
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1570872871484658396}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a471a3a004424f44aed18516c22740e, type: 3}
m_Name:
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.TriggerDetector
--- !u!1 &4125748828694197055
GameObject:
m_ObjectHideFlags: 0
@@ -37,6 +132,7 @@ RectTransform:
- {fileID: 4096697452073127701}
- {fileID: 6793262744715789825}
- {fileID: 7373586313877545823}
- {fileID: 8817646919675700749}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@@ -61,6 +157,7 @@ MonoBehaviour:
PresserAnimator: {fileID: 2069929881663685092}
TopCollider: {fileID: 2714168551213278428}
BottomCollider: {fileID: 8580655252957421185}
EffectTrigger: {fileID: 8140780552350643576}
--- !u!222 &329628596091536199
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -257,7 +354,7 @@ BoxCollider2D:
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 120, y: 16}
m_Size: {x: 88, y: 16}
m_EdgeRadius: 0
--- !u!1 &6685246690386729584
GameObject:
@@ -329,7 +426,7 @@ BoxCollider2D:
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: -70, y: 0}
m_Offset: {x: -62, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
@@ -339,7 +436,7 @@ BoxCollider2D:
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 20, y: 120}
m_Size: {x: 36, y: 120}
m_EdgeRadius: 0
--- !u!1 &7642770092097174314
GameObject:
@@ -421,7 +518,7 @@ BoxCollider2D:
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 120, y: 12}
m_Size: {x: 88, y: 16}
m_EdgeRadius: 0
--- !u!1 &8718160904021803034
GameObject:
@@ -493,7 +590,7 @@ BoxCollider2D:
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 70, y: 0}
m_Offset: {x: 62, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
@@ -503,5 +600,5 @@ BoxCollider2D:
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 20, y: 120}
m_Size: {x: 36, y: 120}
m_EdgeRadius: 0

View File

@@ -1,7 +1,10 @@
using Fruitomation.Global;
using System.Collections.Generic;
using System.Linq;
using Fruitomation.Game.Items;
using JetBrains.Annotations;
using UnityEngine;
using UnityEngine.Scripting;
using Fruitomation.Global;
using UnityEngine;
namespace Fruitomation.Game
{
@@ -11,6 +14,20 @@ namespace Fruitomation.Game
[SerializeField] private Animator PresserAnimator;
[SerializeField] private Collider2D TopCollider;
[SerializeField] private Collider2D BottomCollider;
[SerializeField] private TriggerDetector EffectTrigger;
private HashSet<GameObject> CurrentContainedObjects = new();
private void Awake()
{
EffectTrigger.SetAction(other => CurrentContainedObjects.Add(other.gameObject),
TriggerType.Enter
);
EffectTrigger.SetAction(other => CurrentContainedObjects.Remove(other.gameObject),
TriggerType.Exit
);
}
private void Update()
{
@@ -33,37 +50,32 @@ namespace Fruitomation.Game
}
}
[Preserve, UsedImplicitly]
public void OpenTop()
{
Debug.Log(nameof(OpenTop));
TopCollider.enabled = false;
}
[Preserve, UsedImplicitly]
public void CloseTop()
{
Debug.Log(nameof(CloseTop));
TopCollider.enabled = true;
}
[Preserve, UsedImplicitly]
public void OpenBottom()
{
Debug.Log(nameof(OpenBottom));
BottomCollider.enabled = false;
}
[Preserve, UsedImplicitly]
public void CloseBottom()
{
Debug.Log(nameof(CloseBottom));
BottomCollider.enabled = true;
}
[Preserve, UsedImplicitly] public void OpenTop() => TopCollider.enabled = false;
[Preserve, UsedImplicitly] public void CloseTop() => TopCollider.enabled = true;
[Preserve, UsedImplicitly] public void OpenBottom() => BottomCollider.enabled = false;
[Preserve, UsedImplicitly] public void CloseBottom() => BottomCollider.enabled = true;
[Preserve, UsedImplicitly] public void Press()
{
Debug.Log("Presser Press");
GameObject[] gameObjects = CurrentContainedObjects.ToArray();
foreach (GameObject go in gameObjects)
{
bool isItem = go.transform.parent.TryGetComponent(out ItemBehaviour item);
if (!isItem)
{
return;
}
item.CurrentType = item.CurrentType switch
{
ItemType.Apple => ItemType.AppleJuice,
ItemType.Grape => ItemType.GrapeJuice,
ItemType.Kiwi => ItemType.KiwiJuice,
ItemType.PitayaSkin => ItemType.PitayaFoodDye,
var _ => item.CurrentType // Default
};
}
}
}
}

View File

@@ -6,15 +6,15 @@ namespace Fruitomation.Game
public enum TriggerType
{
Enter,
Stay
Stay,
Exit
}
public class TriggerDetector : MonoBehaviour
{
private Action<Collider2D> RegisteredActionStay;
private Action<Collider2D> RegisteredActionEnter;
private TriggerType Type;
private Action<Collider2D> RegisteredActionExit;
public void SetAction(Action<Collider2D> action, TriggerType type)
{
@@ -28,6 +28,10 @@ namespace Fruitomation.Game
RegisteredActionEnter = action;
return;
case TriggerType.Exit:
RegisteredActionExit = action;
return;
default:
throw new ArgumentOutOfRangeException(nameof(type), type, null);
}
@@ -35,5 +39,6 @@ namespace Fruitomation.Game
private void OnTriggerEnter2D(Collider2D other) => RegisteredActionEnter?.Invoke(other);
private void OnTriggerStay2D(Collider2D other) => RegisteredActionStay?.Invoke(other);
private void OnTriggerExit2D(Collider2D other) => RegisteredActionExit?.Invoke(other);
}
}