Improved fan physics

This commit is contained in:
Pasha Bibko
2026-04-21 10:03:10 +01:00
parent 82a5a9bc1e
commit 76477ab193
16 changed files with 75 additions and 23 deletions

View File

@@ -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

View File

@@ -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:
<SizeOnGrid>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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

View File

@@ -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);
}