From 76477ab193cb2408c5279d1cfc0cfcb2b9c750fc Mon Sep 17 00:00:00 2001 From: Pasha Bibko <156938226+PashaBibko@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:03:10 +0100 Subject: [PATCH] Improved fan physics --- Assets/Prefabs/BaseItemPrefab.prefab | 3 +- Assets/Prefabs/Buildings/FanBuilding.prefab | 41 ++++++++++++++++++- .../Prefabs/Buildings/SlicerBuilding.prefab | 4 +- .../Prefabs/Buildings/SpringBuilding.prefab | 6 +-- Assets/Prefabs/Buildings/StairBuilding.prefab | 4 +- Assets/Prefabs/Buildings/WallBuilding.prefab | 2 +- Assets/Prefabs/Items/Apple.prefab | 2 +- Assets/Prefabs/Items/Banana.prefab | 2 +- Assets/Prefabs/Items/BuddhasHand.prefab | 2 +- Assets/Prefabs/Items/Durian.prefab | 2 +- Assets/Prefabs/Items/Grape.prefab | 2 +- Assets/Prefabs/Items/Kiwi.prefab | 2 +- Assets/Prefabs/Items/Mango.prefab | 2 +- Assets/Prefabs/Items/Pitaya.prefab | 2 +- Assets/Scripts/Game/Buildings/FanBuilding.cs | 18 +++++++- ProjectSettings/TagManager.asset | 4 +- 16 files changed, 75 insertions(+), 23 deletions(-) diff --git a/Assets/Prefabs/BaseItemPrefab.prefab b/Assets/Prefabs/BaseItemPrefab.prefab index 8f50651..03ff9e9 100644 --- a/Assets/Prefabs/BaseItemPrefab.prefab +++ b/Assets/Prefabs/BaseItemPrefab.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 4250375896501906719} - component: {fileID: 2519631449462165926} - component: {fileID: 8934494252055606214} - m_Layer: 0 + m_Layer: 11 m_Name: BaseItemPrefab m_TagString: Untagged m_Icon: {fileID: 0} @@ -58,6 +58,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 76050cf8c863ec84ca2c83053f33726c, type: 3} m_Name: m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.Items.ItemBehaviour + InternalItemType: 0 --- !u!50 &8934494252055606214 Rigidbody2D: serializedVersion: 5 diff --git a/Assets/Prefabs/Buildings/FanBuilding.prefab b/Assets/Prefabs/Buildings/FanBuilding.prefab index 3d9abeb..ebf662e 100644 --- a/Assets/Prefabs/Buildings/FanBuilding.prefab +++ b/Assets/Prefabs/Buildings/FanBuilding.prefab @@ -1,5 +1,40 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &1449457675495342611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2275971447518669826} + m_Layer: 10 + m_Name: FanOrigin + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2275971447518669826 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1449457675495342611} + 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: 546461529234046531} + 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: -25, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &8624048914473773482 GameObject: m_ObjectHideFlags: 0 @@ -15,7 +50,7 @@ GameObject: - component: {fileID: 2938597077917375806} - component: {fileID: -6667291122109179156} - component: {fileID: 2693608777607402836} - m_Layer: 0 + m_Layer: 10 m_Name: FanBuilding m_TagString: Untagged m_Icon: {fileID: 0} @@ -35,6 +70,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 7887192787865691223} + - {fileID: 2275971447518669826} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} @@ -58,6 +94,7 @@ MonoBehaviour: k__BackingField: {x: 1, y: 3} TriggerDetector: {fileID: 260900526863299443} FanAnimator: {fileID: 1099873069624310322} + FanOrigin: {fileID: 2275971447518669826} --- !u!222 &512124502862012575 CanvasRenderer: m_ObjectHideFlags: 0 @@ -231,7 +268,7 @@ GameObject: - component: {fileID: 7887192787865691223} - component: {fileID: 8650414366585600465} - component: {fileID: 260900526863299443} - m_Layer: 0 + m_Layer: 12 m_Name: FanAOE m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Buildings/SlicerBuilding.prefab b/Assets/Prefabs/Buildings/SlicerBuilding.prefab index 65b2bea..f0b91a3 100644 --- a/Assets/Prefabs/Buildings/SlicerBuilding.prefab +++ b/Assets/Prefabs/Buildings/SlicerBuilding.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 8585923548504464766} - component: {fileID: 1267529444914265891} - component: {fileID: 6163106584074071335} - m_Layer: 0 + m_Layer: 10 m_Name: SlicerAOE m_TagString: Untagged m_Icon: {fileID: 0} @@ -110,7 +110,7 @@ GameObject: - component: {fileID: 2938597077917375806} - component: {fileID: -6667291122109179156} - component: {fileID: 2693608777607402836} - m_Layer: 0 + m_Layer: 10 m_Name: SlicerBuilding m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Buildings/SpringBuilding.prefab b/Assets/Prefabs/Buildings/SpringBuilding.prefab index 85e5969..fa1b62e 100644 --- a/Assets/Prefabs/Buildings/SpringBuilding.prefab +++ b/Assets/Prefabs/Buildings/SpringBuilding.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 6476814817477024212} - component: {fileID: 900136177020779137} - component: {fileID: 2128251942503509408} - m_Layer: 0 + m_Layer: 10 m_Name: Colliders m_TagString: Untagged m_Icon: {fileID: 0} @@ -140,7 +140,7 @@ GameObject: - component: {fileID: 3368903718403420727} - component: {fileID: 3249246627232626294} - component: {fileID: 33702449658782569} - m_Layer: 0 + m_Layer: 10 m_Name: Trigger m_TagString: Untagged m_Icon: {fileID: 0} @@ -237,7 +237,7 @@ GameObject: - component: {fileID: 512124502862012575} - component: {fileID: 2938597077917375806} - component: {fileID: 2693608777607402836} - m_Layer: 0 + m_Layer: 10 m_Name: SpringBuilding m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Buildings/StairBuilding.prefab b/Assets/Prefabs/Buildings/StairBuilding.prefab index ea4a04b..62d1b58 100644 --- a/Assets/Prefabs/Buildings/StairBuilding.prefab +++ b/Assets/Prefabs/Buildings/StairBuilding.prefab @@ -13,7 +13,7 @@ GameObject: - component: {fileID: 1981187457390333156} - component: {fileID: 4820490054455351787} - component: {fileID: 7948486692430590329} - m_Layer: 0 + m_Layer: 10 m_Name: StairBuilding m_TagString: Untagged m_Icon: {fileID: 0} @@ -158,7 +158,7 @@ GameObject: m_Component: - component: {fileID: 2305386115665963243} - component: {fileID: 4901325652048475046} - m_Layer: 0 + m_Layer: 10 m_Name: Colliders m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Buildings/WallBuilding.prefab b/Assets/Prefabs/Buildings/WallBuilding.prefab index b50335f..7957f05 100644 --- a/Assets/Prefabs/Buildings/WallBuilding.prefab +++ b/Assets/Prefabs/Buildings/WallBuilding.prefab @@ -14,7 +14,7 @@ GameObject: - component: {fileID: -7175447233120207879} - component: {fileID: -8222757793348430289} - component: {fileID: 4476344134259287183} - m_Layer: 0 + m_Layer: 10 m_Name: WallBuilding m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Apple.prefab b/Assets/Prefabs/Items/Apple.prefab index 687a674..10a1341 100644 --- a/Assets/Prefabs/Items/Apple.prefab +++ b/Assets/Prefabs/Items/Apple.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 170707656067593105} - component: {fileID: 9015791529391101642} - component: {fileID: 2143027257179275844} - m_Layer: 0 + m_Layer: 11 m_Name: Apple m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Banana.prefab b/Assets/Prefabs/Items/Banana.prefab index efd4cd8..c686241 100644 --- a/Assets/Prefabs/Items/Banana.prefab +++ b/Assets/Prefabs/Items/Banana.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 6022429437766446618} - component: {fileID: 6710749987800196452} - component: {fileID: 2034412630507027966} - m_Layer: 0 + m_Layer: 11 m_Name: Banana m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/BuddhasHand.prefab b/Assets/Prefabs/Items/BuddhasHand.prefab index bd16375..9e20db4 100644 --- a/Assets/Prefabs/Items/BuddhasHand.prefab +++ b/Assets/Prefabs/Items/BuddhasHand.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 583702482227284555} - component: {fileID: 6416977611996712630} - component: {fileID: 6728572696821424054} - m_Layer: 0 + m_Layer: 11 m_Name: BuddhasHand m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Durian.prefab b/Assets/Prefabs/Items/Durian.prefab index 1d25ad3..49529bd 100644 --- a/Assets/Prefabs/Items/Durian.prefab +++ b/Assets/Prefabs/Items/Durian.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 5673621187239732349} - component: {fileID: 3055702604452257690} - component: {fileID: 963027178517632149} - m_Layer: 0 + m_Layer: 11 m_Name: Durian m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Grape.prefab b/Assets/Prefabs/Items/Grape.prefab index 6108718..1d02126 100644 --- a/Assets/Prefabs/Items/Grape.prefab +++ b/Assets/Prefabs/Items/Grape.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 4016799572980916140} - component: {fileID: 4889414921371628351} - component: {fileID: 6039744482559740417} - m_Layer: 0 + m_Layer: 11 m_Name: Grape m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Kiwi.prefab b/Assets/Prefabs/Items/Kiwi.prefab index 2b38d71..30632e4 100644 --- a/Assets/Prefabs/Items/Kiwi.prefab +++ b/Assets/Prefabs/Items/Kiwi.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 7690593262013444070} - component: {fileID: 4415690043126729105} - component: {fileID: 5561862563799791105} - m_Layer: 0 + m_Layer: 11 m_Name: Kiwi m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Mango.prefab b/Assets/Prefabs/Items/Mango.prefab index 1da7e7d..a27c112 100644 --- a/Assets/Prefabs/Items/Mango.prefab +++ b/Assets/Prefabs/Items/Mango.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 5779066027437858329} - component: {fileID: 8572516747556436847} - component: {fileID: 1774449426770163631} - m_Layer: 0 + m_Layer: 11 m_Name: Mango m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Prefabs/Items/Pitaya.prefab b/Assets/Prefabs/Items/Pitaya.prefab index 8e12d2e..909f8c7 100644 --- a/Assets/Prefabs/Items/Pitaya.prefab +++ b/Assets/Prefabs/Items/Pitaya.prefab @@ -12,7 +12,7 @@ GameObject: - component: {fileID: 5411504766647877595} - component: {fileID: 8561610707771141133} - component: {fileID: 6348747951340073204} - m_Layer: 0 + m_Layer: 11 m_Name: Pitaya m_TagString: Untagged m_Icon: {fileID: 0} diff --git a/Assets/Scripts/Game/Buildings/FanBuilding.cs b/Assets/Scripts/Game/Buildings/FanBuilding.cs index da60ad2..deb3114 100644 --- a/Assets/Scripts/Game/Buildings/FanBuilding.cs +++ b/Assets/Scripts/Game/Buildings/FanBuilding.cs @@ -8,6 +8,7 @@ namespace Fruitomation.Game [Header("Fan Specific Items")] [SerializeField] private TriggerDetector TriggerDetector; [SerializeField] private Animator FanAnimator; + [SerializeField] private Transform FanOrigin; private void Start() { @@ -15,8 +16,21 @@ namespace Fruitomation.Game { if (other.transform.parent.TryGetComponent(out Rigidbody2D body)) { - Vector3 force = new(-transform.localScale.x, 0f, 0f); - body?.AddForce(force * Mathf.PI, ForceMode2D.Impulse); + Vector3 start = FanOrigin.position; + Vector3 end = body.gameObject.transform.position; + Vector3 diff = end - start; + Vector3 dir = diff.normalized; + float mag = diff.magnitude; + int mask = LayerMask.GetMask("Buildings"); + + RaycastHit2D hit = Physics2D.Raycast(start, dir, mag, mask); + if (hit.collider is null) + { + Vector3 force = new(-transform.localScale.x, 0f, 0f); + Debug.Log(mag); + + body.AddForce(force * (12f / mag), ForceMode2D.Force); + } } }, TriggerType.Stay); } diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index b00eabb..8e4aa6f 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -15,8 +15,8 @@ TagManager: - - - - - - - + - Buildings + - Items - - -