From cca4b758271760d162a0591548d18fede08ae93d Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Tue, 14 May 2024 15:00:55 +0200 Subject: [PATCH] feat: Ships set color of mesh over property -> less prefab variants, improved hit feedback, improved meshes and Triggers --- .../{Ships => Legacy}/Blue Ship.prefab | 2 +- .../{Ships => Legacy}/Blue Ship.prefab.meta | 0 .../{Ships => Legacy}/Green Ship.prefab | 3 +- .../{Ships => Legacy}/Green Ship.prefab.meta | 0 .../{Ships => Legacy}/Purple Ship.prefab | 3 +- .../{Ships => Legacy}/Purple Ship.prefab.meta | 0 .../Prefabs/{Ships => Legacy}/Red Ship.prefab | 3 +- .../{Ships => Legacy}/Red Ship.prefab.meta | 0 Assets/Prefabs/Ships/Default Ship.prefab | 1064 +++++++++++++++++ Assets/Prefabs/Ships/Default Ship.prefab.meta | 7 + .../BaseProperties/BaseShip.asset | 10 +- Assets/ScriptedAssets/Bench.meta | 8 + Assets/ScriptedAssets/Bench/BaseShip 2.asset | 37 + .../Bench/BaseShip 2.asset.meta | 8 + Assets/ScriptedAssets/Bench/BaseShip.asset | 37 + .../ScriptedAssets/Bench/BaseShip.asset.meta | 8 + .../ScriptedAssets/Characters/BlueShip.asset | 3 +- .../ScriptedAssets/Characters/GreenShip.asset | 3 +- .../Characters/PurpleShip.asset | 3 +- .../ScriptedAssets/Characters/RedShip.asset | 3 +- .../ScriptableObjects/BaseShipProperties.cs | 8 +- .../ScriptableObjects/ShipProperties.cs | 24 +- Assets/Scripts/Ship.cs | 98 +- Assets/Scripts/ShipState.cs | 2 + Assets/Scripts/TackleDetection.cs | 29 +- 25 files changed, 1314 insertions(+), 49 deletions(-) rename Assets/Prefabs/{Ships => Legacy}/Blue Ship.prefab (99%) rename Assets/Prefabs/{Ships => Legacy}/Blue Ship.prefab.meta (100%) rename Assets/Prefabs/{Ships => Legacy}/Green Ship.prefab (99%) rename Assets/Prefabs/{Ships => Legacy}/Green Ship.prefab.meta (100%) rename Assets/Prefabs/{Ships => Legacy}/Purple Ship.prefab (99%) rename Assets/Prefabs/{Ships => Legacy}/Purple Ship.prefab.meta (100%) rename Assets/Prefabs/{Ships => Legacy}/Red Ship.prefab (99%) rename Assets/Prefabs/{Ships => Legacy}/Red Ship.prefab.meta (100%) create mode 100644 Assets/Prefabs/Ships/Default Ship.prefab create mode 100644 Assets/Prefabs/Ships/Default Ship.prefab.meta create mode 100644 Assets/ScriptedAssets/Bench.meta create mode 100644 Assets/ScriptedAssets/Bench/BaseShip 2.asset create mode 100644 Assets/ScriptedAssets/Bench/BaseShip 2.asset.meta create mode 100644 Assets/ScriptedAssets/Bench/BaseShip.asset create mode 100644 Assets/ScriptedAssets/Bench/BaseShip.asset.meta diff --git a/Assets/Prefabs/Ships/Blue Ship.prefab b/Assets/Prefabs/Legacy/Blue Ship.prefab similarity index 99% rename from Assets/Prefabs/Ships/Blue Ship.prefab rename to Assets/Prefabs/Legacy/Blue Ship.prefab index b01dfb5..f60f0bd 100644 --- a/Assets/Prefabs/Ships/Blue Ship.prefab +++ b/Assets/Prefabs/Legacy/Blue Ship.prefab @@ -452,7 +452,7 @@ MonoBehaviour: k__BackingField: 0 _scenePathHash: 0 k__BackingField: 0 - k__BackingField: 8202943414176531587 + k__BackingField: 13364203004141276529 --- !u!114 &7840113418566161560 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Ships/Blue Ship.prefab.meta b/Assets/Prefabs/Legacy/Blue Ship.prefab.meta similarity index 100% rename from Assets/Prefabs/Ships/Blue Ship.prefab.meta rename to Assets/Prefabs/Legacy/Blue Ship.prefab.meta diff --git a/Assets/Prefabs/Ships/Green Ship.prefab b/Assets/Prefabs/Legacy/Green Ship.prefab similarity index 99% rename from Assets/Prefabs/Ships/Green Ship.prefab rename to Assets/Prefabs/Legacy/Green Ship.prefab index cf0d375..c6a7878 100644 --- a/Assets/Prefabs/Ships/Green Ship.prefab +++ b/Assets/Prefabs/Legacy/Green Ship.prefab @@ -192,6 +192,7 @@ MonoBehaviour: gravityEffect: {fileID: 8590080437221755141} jetFlameEffect: {fileID: 3312185522185408775} smokeTrailEffect: {fileID: 978131449706323191} + fireController: {fileID: 0} --- !u!114 &394654179909484550 MonoBehaviour: m_ObjectHideFlags: 0 @@ -234,7 +235,7 @@ MonoBehaviour: k__BackingField: 0 _scenePathHash: 0 k__BackingField: 0 - k__BackingField: 16670295706234430249 + k__BackingField: 5551583836262103703 --- !u!114 &8307104301583811584 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Ships/Green Ship.prefab.meta b/Assets/Prefabs/Legacy/Green Ship.prefab.meta similarity index 100% rename from Assets/Prefabs/Ships/Green Ship.prefab.meta rename to Assets/Prefabs/Legacy/Green Ship.prefab.meta diff --git a/Assets/Prefabs/Ships/Purple Ship.prefab b/Assets/Prefabs/Legacy/Purple Ship.prefab similarity index 99% rename from Assets/Prefabs/Ships/Purple Ship.prefab rename to Assets/Prefabs/Legacy/Purple Ship.prefab index a01ba67..fa585c9 100644 --- a/Assets/Prefabs/Ships/Purple Ship.prefab +++ b/Assets/Prefabs/Legacy/Purple Ship.prefab @@ -192,6 +192,7 @@ MonoBehaviour: gravityEffect: {fileID: 2930093712651127642} jetFlameEffect: {fileID: 3312185522185408775} smokeTrailEffect: {fileID: 978131449706323191} + fireController: {fileID: 0} --- !u!114 &394654179909484550 MonoBehaviour: m_ObjectHideFlags: 0 @@ -234,7 +235,7 @@ MonoBehaviour: k__BackingField: 0 _scenePathHash: 0 k__BackingField: 0 - k__BackingField: 13918576962987486207 + k__BackingField: 10015891062238479949 --- !u!114 &8307104301583811584 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Ships/Purple Ship.prefab.meta b/Assets/Prefabs/Legacy/Purple Ship.prefab.meta similarity index 100% rename from Assets/Prefabs/Ships/Purple Ship.prefab.meta rename to Assets/Prefabs/Legacy/Purple Ship.prefab.meta diff --git a/Assets/Prefabs/Ships/Red Ship.prefab b/Assets/Prefabs/Legacy/Red Ship.prefab similarity index 99% rename from Assets/Prefabs/Ships/Red Ship.prefab rename to Assets/Prefabs/Legacy/Red Ship.prefab index b882d8c..6c407dc 100644 --- a/Assets/Prefabs/Ships/Red Ship.prefab +++ b/Assets/Prefabs/Legacy/Red Ship.prefab @@ -192,6 +192,7 @@ MonoBehaviour: gravityEffect: {fileID: 5356225948148490788} jetFlameEffect: {fileID: 3312185522185408775} smokeTrailEffect: {fileID: 978131449706323191} + fireController: {fileID: 0} --- !u!114 &394654179909484550 MonoBehaviour: m_ObjectHideFlags: 0 @@ -234,7 +235,7 @@ MonoBehaviour: k__BackingField: 0 _scenePathHash: 0 k__BackingField: 0 - k__BackingField: 3827021182781196237 + k__BackingField: 5851826624730448275 --- !u!114 &8307104301583811584 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Ships/Red Ship.prefab.meta b/Assets/Prefabs/Legacy/Red Ship.prefab.meta similarity index 100% rename from Assets/Prefabs/Ships/Red Ship.prefab.meta rename to Assets/Prefabs/Legacy/Red Ship.prefab.meta diff --git a/Assets/Prefabs/Ships/Default Ship.prefab b/Assets/Prefabs/Ships/Default Ship.prefab new file mode 100644 index 0000000..687ca99 --- /dev/null +++ b/Assets/Prefabs/Ships/Default Ship.prefab @@ -0,0 +1,1064 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &633462257752369959 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8571208796381655806} + - component: {fileID: 2905650244849558456} + - component: {fileID: 3246080672317496222} + m_Layer: 6 + m_Name: Spike + m_TagString: Spike + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8571208796381655806 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633462257752369959} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &2905650244849558456 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633462257752369959} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.4 + m_Center: {x: 0, y: 0.3, z: -0.13130158} +--- !u!114 &3246080672317496222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 633462257752369959} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3c7fe3de71657ad45a715b48cce00faa, type: 3} + m_Name: + m_EditorClassIdentifier: + tackleKind: 2 +--- !u!1 &824086104227363207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 982896938032841241} + m_Layer: 8 + m_Name: Gun Socket + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &982896938032841241 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 824086104227363207} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1 &950156585708023501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4720078012668975929} + - component: {fileID: 4145727123877952672} + - component: {fileID: 8073551614022217321} + m_Layer: 6 + m_Name: Wing Spike Left + m_TagString: Bumper + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4720078012668975929 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950156585708023501} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.3, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &4145727123877952672 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950156585708023501} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.22474784 + m_Center: {x: 0.01105564, y: 0.31469262, z: 0} +--- !u!114 &8073551614022217321 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 950156585708023501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3c7fe3de71657ad45a715b48cce00faa, type: 3} + m_Name: + m_EditorClassIdentifier: + tackleKind: 3 +--- !u!1 &1349367779684097889 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5739110816181282754} + - component: {fileID: 586779197816813664} + - component: {fileID: 3162407706504821700} + m_Layer: 7 + m_Name: Body Area Vert + m_TagString: Vulnerable + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5739110816181282754 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349367779684097889} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.091, z: 0.006000519} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &586779197816813664 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349367779684097889} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.968027 + m_Height: 3.288871 + m_Direction: 1 + m_Center: {x: 0.019480824, y: 0.59207475, z: 0} +--- !u!114 &3162407706504821700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349367779684097889} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3c7fe3de71657ad45a715b48cce00faa, type: 3} + m_Name: + m_EditorClassIdentifier: + tackleKind: 1 +--- !u!1 &1372816401649438144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5042970769659716555} + - component: {fileID: 112616906359525181} + - component: {fileID: 5386778326747795230} + - component: {fileID: 2704141135220834432} + - component: {fileID: 6551228186126772357} + m_Layer: 8 + m_Name: Default Ship + m_TagString: Ship + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5042970769659716555 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372816401649438144} + serializedVersion: 2 + 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: 1 + m_Children: + - {fileID: 8334191668073254086} + - {fileID: 1483206452300237684} + - {fileID: 982896938032841241} + - {fileID: 8571208796381655806} + - {fileID: 4720078012668975929} + - {fileID: 2425795438557507562} + - {fileID: 8593468838974035070} + - {fileID: 5739110816181282754} + - {fileID: 3489597143813469327} + - {fileID: 4542710706480618604} + - {fileID: 7971143227516595385} + - {fileID: 3078445893664878222} + - {fileID: 6780256004419462580} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &112616906359525181 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372816401649438144} + serializedVersion: 4 + m_Mass: 10 + m_Drag: 0 + m_AngularDrag: 1e+38 + m_CenterOfMass: {x: 0, y: 1, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 0 + m_ImplicitTensor: 0 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 1 +--- !u!65 &5386778326747795230 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372816401649438144} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 8 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 503 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 1, z: -1.3} +--- !u!114 &2704141135220834432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372816401649438144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2b6244fd2a6ceee4ab8504fadf75ae20, type: 3} + m_Name: + m_EditorClassIdentifier: + props: {fileID: 0} + boostUI: {fileID: 0} + cameraOperator: {fileID: 0} + boostEffect: {fileID: 7234768050496314884} + gravityEffect: {fileID: 4872706334040053047} + jetFlameEffect: {fileID: 4832079438170929303} + smokeTrailEffect: {fileID: 3500843490324877803} + fireController: {fileID: 6551228186126772357} + bodyMeshRenderer: {fileID: 8803443673514485770} +--- !u!114 &6551228186126772357 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1372816401649438144} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2b82c757a706dd44ad77efcf0d513f4, type: 3} + m_Name: + m_EditorClassIdentifier: + TurretSocket: + - {fileID: 982896938032841241} + ShellParticles: [] + DefaultFXType: 4 + vulcanProjectile: {fileID: 400000, guid: e496166a742ada640b89650ebebbd052, type: 3} + vulcanMuzzle: {fileID: 400002, guid: ca6dec307275d294ba519247d04b6733, type: 3} + vulcanImpact: {fileID: 400000, guid: bfa7781c328a236468eda51a8ae2be55, type: 3} + vulcanOffset: 0 + VulcanFireRate: 0.11 + soloGunProjectile: {fileID: 6391351660618465683, guid: f1d6be8fd7d5cc6448b99caa0671e56f, type: 3} + soloGunMuzzle: {fileID: 400000, guid: b16d97c287e513344af2399ff138cd27, type: 3} + soloGunImpact: {fileID: 400004, guid: fd953838f1872d042a334b466e298967, type: 3} + soloGunOffset: 0 + sniperBeam: {fileID: 400000, guid: 12e7c1b739173c946b6fa3d40e9f62d1, type: 3} + sniperMuzzle: {fileID: 400004, guid: 43a8e47b31adb9a47b81c4653b412e5c, type: 3} + sniperImpact: {fileID: 400004, guid: a980d2b7788c0ef489f3c79f44da79e1, type: 3} + sniperOffset: 0 + shotGunProjectile: {fileID: 400002, guid: 0072b525437a5ed4891ebd255ec94fe6, type: 3} + shotGunMuzzle: {fileID: 400002, guid: ca6dec307275d294ba519247d04b6733, type: 3} + shotGunImpact: {fileID: 400000, guid: 5f10243d9632db04bb987838fb3b36b7, type: 3} + shotGunOffset: 0 + seekerProjectile: {fileID: 400000, guid: 83319fcfeef06cf4288182309b1387d0, type: 3} + seekerMuzzle: {fileID: 400004, guid: 235092330dd93ce4ab3f64b4b4b9c354, type: 3} + seekerImpact: {fileID: 400010, guid: 25381a5e43841e943a27b043442b2b4d, type: 3} + seekerOffset: 0 + railgunBeam: {fileID: 400000, guid: ec0fb8bef2fb8a5459c55c3700521b70, type: 3} + railgunMuzzle: {fileID: 400000, guid: b16d97c287e513344af2399ff138cd27, type: 3} + railgunImpact: {fileID: 400010, guid: 2e92e894e0311c14c87f9544b2c88693, type: 3} + railgunOffset: 0 + plasmagunProjectile: {fileID: 400000, guid: e7b84dec6cdbfb646a33fd06b85cf64e, type: 3} + plasmagunMuzzle: {fileID: 400002, guid: e4aff98840a58c94ea1cec28789d55d6, type: 3} + plasmagunImpact: {fileID: 400004, guid: ec543be1efaafca46aeac6f66e7a5ff0, type: 3} + plasmaGunOffset: 0 + plasmaBeam: {fileID: 400000, guid: 66b50793fa1c780409218a1a1db5b1d8, type: 3} + plasmaOffset: 0 + plasmaBeamHeavy: {fileID: 400000, guid: a5251bb5b54465f43aebe1ddc2724566, type: 3} + plasmaBeamHeavyOffset: 0 + lightningGunBeam: {fileID: 400002, guid: 497cce4f043498049994c48e6e47f0ae, type: 3} + lightingGunBeamOffset: 0 + flameRed: {fileID: 400002, guid: bd9162be33a5ce54aa35d8e984e6d39d, type: 3} + flameOffset: 0 + laserImpulseProjectile: {fileID: 400004, guid: 64703ac190f718b4abd5d10cb23c96ce, type: 3} + laserImpulseMuzzle: {fileID: 400004, guid: 45116fb1512dc704b99d70267628129a, type: 3} + laserImpulseImpact: {fileID: 400010, guid: ce59e020d922ccb43866dee1ba26a673, type: 3} + laserImpulseOffset: 0 +--- !u!1 &2236297877709258492 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8593468838974035070} + - component: {fileID: 2834900501353118452} + - component: {fileID: 724450761244835194} + m_Layer: 7 + m_Name: Body Area Hori + m_TagString: Vulnerable + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8593468838974035070 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2236297877709258492} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.091, z: 0.006000519} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &2834900501353118452 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2236297877709258492} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.6554493 + m_Height: 3.3167114 + m_Direction: 0 + m_Center: {x: -0.0063209534, y: 1.0638112, z: 0} +--- !u!114 &724450761244835194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2236297877709258492} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3c7fe3de71657ad45a715b48cce00faa, type: 3} + m_Name: + m_EditorClassIdentifier: + tackleKind: 1 +--- !u!1 &5993886774677081169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8334191668073254086} + - component: {fileID: 5378356700509865182} + m_Layer: 8 + m_Name: Rigidbody Mesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8334191668073254086 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5993886774677081169} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 1.5, z: 0} + m_LocalScale: {x: 0.2, y: 0.3, z: 0.15} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!64 &5378356700509865182 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5993886774677081169} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 256 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 255 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 4300000, guid: e4d9379152a543d4a85641969a5a0744, type: 3} +--- !u!1 &6980644068169889807 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3489597143813469327} + - component: {fileID: 8606206132848449603} + - component: {fileID: 637555920663137379} + m_Layer: 7 + m_Name: Vulnerable Area + m_TagString: Vulnerable + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3489597143813469327 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6980644068169889807} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -1.064, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!136 &8606206132848449603 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6980644068169889807} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Height: 1.3687391 + m_Direction: 0 + m_Center: {x: -0.0100131035, y: -0.077233315, z: 0} +--- !u!114 &637555920663137379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6980644068169889807} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3c7fe3de71657ad45a715b48cce00faa, type: 3} + m_Name: + m_EditorClassIdentifier: + tackleKind: 0 +--- !u!1 &7841776443744888956 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2425795438557507562} + - component: {fileID: 2623718159774269050} + - component: {fileID: 2043393111525899212} + m_Layer: 6 + m_Name: Wing Spike Right + m_TagString: Bumper + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2425795438557507562 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7841776443744888956} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.3, y: 1.2, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5042970769659716555} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &2623718159774269050 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7841776443744888956} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.22474784 + m_Center: {x: 0.01105564, y: 0.31469262, z: 0} +--- !u!114 &2043393111525899212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7841776443744888956} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3c7fe3de71657ad45a715b48cce00faa, type: 3} + m_Name: + m_EditorClassIdentifier: + tackleKind: 3 +--- !u!1001 &123332957444049686 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5042970769659716555} + m_Modifications: + - target: {fileID: 5747506880537754056, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_Name + value: Gravity Line Particles + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalPosition.x + value: 0.21 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalPosition.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalPosition.z + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 5075d8b26bc537c439b56964f382020e, type: 3} +--- !u!198 &4872706334040053047 stripped +ParticleSystem: + m_CorrespondingSourceObject: {fileID: 4767480441459301921, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + m_PrefabInstance: {fileID: 123332957444049686} + m_PrefabAsset: {fileID: 0} +--- !u!4 &6780256004419462580 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 6894558316197621410, guid: 5075d8b26bc537c439b56964f382020e, type: 3} + m_PrefabInstance: {fileID: 123332957444049686} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &754241372986275310 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5042970769659716555} + m_Modifications: + - target: {fileID: 4109326443333075970, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_Name + value: Boost Shock Wave Particles + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalPosition.y + value: 2.385 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalPosition.z + value: -0.4 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7931003585827073002, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7931003585827073002, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: lengthInSec + value: 0.8 + objectReference: {fileID: 0} + - target: {fileID: 7931003585827073002, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: EmissionModule.m_Bursts.Array.data[1].time + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 7931003585827073002, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + propertyPath: EmissionModule.m_Bursts.Array.data[2].time + value: 0.4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} +--- !u!198 &7234768050496314884 stripped +ParticleSystem: + m_CorrespondingSourceObject: {fileID: 7931003585827073002, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + m_PrefabInstance: {fileID: 754241372986275310} + m_PrefabAsset: {fileID: 0} +--- !u!4 &7971143227516595385 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 7271248515473135959, guid: 24a81306cc1fbbd4b8f10022e2d6ee0d, type: 3} + m_PrefabInstance: {fileID: 754241372986275310} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1378049901460532383 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5042970769659716555} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalScale.x + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalScale.y + value: 0.25 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalScale.z + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalPosition.y + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalRotation.x + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -6896813348456795565, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 9ef1ef5754926b34e93f31acca505d0a, type: 2} + - target: {fileID: -1642744634756266859, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Materials.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -1642744634756266859, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 4d8d9f678971ac94f80eb9849d414cc5, type: 2} + - target: {fileID: -1642744634756266859, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Materials.Array.data[1] + value: + objectReference: {fileID: -876546973899608171, guid: 894e255bca895714c929238ea0e6273f, type: 3} + - target: {fileID: 919132149155446097, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Name + value: Spaceship9 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Layer + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_TagString + value: Ship + objectReference: {fileID: 0} + - target: {fileID: 2081346997128030056, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Layer + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 6772629167761317917, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + propertyPath: m_Layer + value: 8 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} +--- !u!4 &1483206452300237684 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + m_PrefabInstance: {fileID: 1378049901460532383} + m_PrefabAsset: {fileID: 0} +--- !u!23 &8803443673514485770 stripped +MeshRenderer: + m_CorrespondingSourceObject: {fileID: -1642744634756266859, guid: 40527c707fffde84c99533c25bbcd8cd, type: 3} + m_PrefabInstance: {fileID: 1378049901460532383} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &2003113329371731864 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5042970769659716555} + m_Modifications: + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalPosition.x + value: -0.02 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalPosition.y + value: -2.464 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalPosition.z + value: -0.563 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8121523519804063547, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + propertyPath: m_Name + value: Jet Flame Particles + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} +--- !u!4 &3078445893664878222 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3563661011899316502, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + m_PrefabInstance: {fileID: 2003113329371731864} + m_PrefabAsset: {fileID: 0} +--- !u!198 &4832079438170929303 stripped +ParticleSystem: + m_CorrespondingSourceObject: {fileID: 6395817701140918031, guid: a85c082f5fc6ca4428f78f385e6b42a9, type: 3} + m_PrefabInstance: {fileID: 2003113329371731864} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &3400143175839768829 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 5042970769659716555} + m_Modifications: + - target: {fileID: 286824833114894065, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_Name + value: Smoke Trail Particles + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalPosition.y + value: -2.277 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalPosition.z + value: -0.451 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} +--- !u!198 &3500843490324877803 stripped +ParticleSystem: + m_CorrespondingSourceObject: {fileID: 2286353817893630230, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + m_PrefabInstance: {fileID: 3400143175839768829} + m_PrefabAsset: {fileID: 0} +--- !u!4 &4542710706480618604 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 1163423376577002641, guid: 98bf6d3624da8d54fbe33787e003ef60, type: 3} + m_PrefabInstance: {fileID: 3400143175839768829} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Ships/Default Ship.prefab.meta b/Assets/Prefabs/Ships/Default Ship.prefab.meta new file mode 100644 index 0000000..21add0a --- /dev/null +++ b/Assets/Prefabs/Ships/Default Ship.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 75db4d0681fa51f4bb6106997f11022e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ScriptedAssets/BaseProperties/BaseShip.asset b/Assets/ScriptedAssets/BaseProperties/BaseShip.asset index 315dd9b..bc884c4 100644 --- a/Assets/ScriptedAssets/BaseProperties/BaseShip.asset +++ b/Assets/ScriptedAssets/BaseProperties/BaseShip.asset @@ -25,9 +25,11 @@ MonoBehaviour: minBoostCapacity: 0.5 boostMagnitude: 2 outsideBoostRate: 0 - boostAntiGravityFactor: 0.5 + boostAntiGravityFactor: 0.62 stunLooseControlFactor: 0.1 - tackleCriticalStunTime: 0.6 - tackleBodyStunTime: 0.3 - criticalTacklePowerFactor: 60 + tacklingGraceTime: 0.6 + tackledGraceTime: 0.3 + tackledCriticalStunTime: 0.6 + tackledBodyStunTime: 0.3 + criticalTacklePowerFactor: 300 normalTacklePowerFactor: 100 diff --git a/Assets/ScriptedAssets/Bench.meta b/Assets/ScriptedAssets/Bench.meta new file mode 100644 index 0000000..cd756ca --- /dev/null +++ b/Assets/ScriptedAssets/Bench.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08c48ab20db07b44782d8639776cba72 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ScriptedAssets/Bench/BaseShip 2.asset b/Assets/ScriptedAssets/Bench/BaseShip 2.asset new file mode 100644 index 0000000..b9728ea --- /dev/null +++ b/Assets/ScriptedAssets/Bench/BaseShip 2.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f5cabb9de76fbfa49b5ccac30cd25c68, type: 3} + m_Name: BaseShip 2 + m_EditorClassIdentifier: + baseProps: {fileID: 11400000, guid: 8bb9b96c7ef17e94bbd897292f08cd4e, type: 2} + shipPrefab: {fileID: 1372816401649438144, guid: 75db4d0681fa51f4bb6106997f11022e, type: 3} + shipName: Test Ship 2 + shipHullColor: {r: 0.6528301, g: 0.6528301, b: 0.6528301, a: 1} + thrustAccelerationModifier: 1 + steerVelocityModifier: 1 + normalMaxVelocityModifier: 1 + absolutMaxVelocityModifier: 1 + antiDriftAmountModifier: 1 + minAntiDriftFactorModifier: 1 + normalDragModifier: 1 + maximumDragModifier: 1 + torqueDragModifier: 1 + maxBoostCapacityModifier: 1 + minBoostCapacityModifier: 1 + boostMagnitudeModifier: 1 + outsideBoostRateModifier: 1 + boostAntiGravityFactorModifier: 1 + stunLooseControlFactorModifier: 1 + tackleCriticalStunTimeModifier: 1 + tackleBodyStunTimeModifier: 1 + criticalTacklePowerFactorModifier: 1 + normalTacklePowerFactorModifier: 1 diff --git a/Assets/ScriptedAssets/Bench/BaseShip 2.asset.meta b/Assets/ScriptedAssets/Bench/BaseShip 2.asset.meta new file mode 100644 index 0000000..c27b54d --- /dev/null +++ b/Assets/ScriptedAssets/Bench/BaseShip 2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 233a6e3591923bc418e8e78ae1661cec +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ScriptedAssets/Bench/BaseShip.asset b/Assets/ScriptedAssets/Bench/BaseShip.asset new file mode 100644 index 0000000..2915206 --- /dev/null +++ b/Assets/ScriptedAssets/Bench/BaseShip.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f5cabb9de76fbfa49b5ccac30cd25c68, type: 3} + m_Name: BaseShip + m_EditorClassIdentifier: + baseProps: {fileID: 11400000, guid: 8bb9b96c7ef17e94bbd897292f08cd4e, type: 2} + shipPrefab: {fileID: 1372816401649438144, guid: 75db4d0681fa51f4bb6106997f11022e, type: 3} + shipName: Test Ship + shipHullColor: {r: 0.8792453, g: 0.8792453, b: 0.8792453, a: 1} + thrustAccelerationModifier: 1 + steerVelocityModifier: 1 + normalMaxVelocityModifier: 1 + absolutMaxVelocityModifier: 1 + antiDriftAmountModifier: 1 + minAntiDriftFactorModifier: 1 + normalDragModifier: 1 + maximumDragModifier: 1 + torqueDragModifier: 1 + maxBoostCapacityModifier: 1 + minBoostCapacityModifier: 1 + boostMagnitudeModifier: 1 + outsideBoostRateModifier: 1 + boostAntiGravityFactorModifier: 1 + stunLooseControlFactorModifier: 1 + tackleCriticalStunTimeModifier: 1 + tackleBodyStunTimeModifier: 1 + criticalTacklePowerFactorModifier: 1 + normalTacklePowerFactorModifier: 1 diff --git a/Assets/ScriptedAssets/Bench/BaseShip.asset.meta b/Assets/ScriptedAssets/Bench/BaseShip.asset.meta new file mode 100644 index 0000000..81f7c2b --- /dev/null +++ b/Assets/ScriptedAssets/Bench/BaseShip.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 574c42ee41c481a49a8ec93588407090 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ScriptedAssets/Characters/BlueShip.asset b/Assets/ScriptedAssets/Characters/BlueShip.asset index 80e6213..d0c58b2 100644 --- a/Assets/ScriptedAssets/Characters/BlueShip.asset +++ b/Assets/ScriptedAssets/Characters/BlueShip.asset @@ -13,8 +13,9 @@ MonoBehaviour: m_Name: BlueShip m_EditorClassIdentifier: baseProps: {fileID: 11400000, guid: 8bb9b96c7ef17e94bbd897292f08cd4e, type: 2} - shipPrefab: {fileID: 1372816401649438144, guid: 65cd4fa5e050652409dd9b062365c7e8, type: 3} + shipPrefab: {fileID: 1372816401649438144, guid: 75db4d0681fa51f4bb6106997f11022e, type: 3} shipName: Blue Blitz + shipHullColor: {r: 0, g: 0.62125206, b: 1, a: 1} thrustAccelerationModifier: 1 steerVelocityModifier: 1 normalMaxVelocityModifier: 1 diff --git a/Assets/ScriptedAssets/Characters/GreenShip.asset b/Assets/ScriptedAssets/Characters/GreenShip.asset index d1a7f47..87a900e 100644 --- a/Assets/ScriptedAssets/Characters/GreenShip.asset +++ b/Assets/ScriptedAssets/Characters/GreenShip.asset @@ -13,8 +13,9 @@ MonoBehaviour: m_Name: GreenShip m_EditorClassIdentifier: baseProps: {fileID: 11400000, guid: 8bb9b96c7ef17e94bbd897292f08cd4e, type: 2} - shipPrefab: {fileID: 1372816401649438144, guid: 9f3e27e33167d704e941e42ded557111, type: 3} + shipPrefab: {fileID: 1372816401649438144, guid: 75db4d0681fa51f4bb6106997f11022e, type: 3} shipName: Green Danger + shipHullColor: {r: 0, g: 1, b: 0.40690804, a: 1} thrustAccelerationModifier: 1 steerVelocityModifier: 1 normalMaxVelocityModifier: 1 diff --git a/Assets/ScriptedAssets/Characters/PurpleShip.asset b/Assets/ScriptedAssets/Characters/PurpleShip.asset index 83425f6..44cc015 100644 --- a/Assets/ScriptedAssets/Characters/PurpleShip.asset +++ b/Assets/ScriptedAssets/Characters/PurpleShip.asset @@ -13,8 +13,9 @@ MonoBehaviour: m_Name: PurpleShip m_EditorClassIdentifier: baseProps: {fileID: 11400000, guid: 8bb9b96c7ef17e94bbd897292f08cd4e, type: 2} - shipPrefab: {fileID: 1372816401649438144, guid: 5934082513feac04a9b875fc86abe70b, type: 3} + shipPrefab: {fileID: 1372816401649438144, guid: 75db4d0681fa51f4bb6106997f11022e, type: 3} shipName: Purple Haze + shipHullColor: {r: 0.6345311, g: 0.17924517, b: 1, a: 1} thrustAccelerationModifier: 1 steerVelocityModifier: 1 normalMaxVelocityModifier: 1 diff --git a/Assets/ScriptedAssets/Characters/RedShip.asset b/Assets/ScriptedAssets/Characters/RedShip.asset index 32b0784..12b8c38 100644 --- a/Assets/ScriptedAssets/Characters/RedShip.asset +++ b/Assets/ScriptedAssets/Characters/RedShip.asset @@ -13,8 +13,9 @@ MonoBehaviour: m_Name: RedShip m_EditorClassIdentifier: baseProps: {fileID: 11400000, guid: 8bb9b96c7ef17e94bbd897292f08cd4e, type: 2} - shipPrefab: {fileID: 1372816401649438144, guid: 46f84e56340e83e4ba7c6abbccd2ae3f, type: 3} + shipPrefab: {fileID: 1372816401649438144, guid: 75db4d0681fa51f4bb6106997f11022e, type: 3} shipName: Red Menace + shipHullColor: {r: 0.9924528, g: 0.18470371, b: 0.1404413, a: 1} thrustAccelerationModifier: 1 steerVelocityModifier: 1 normalMaxVelocityModifier: 1 diff --git a/Assets/Scripts/ScriptableObjects/BaseShipProperties.cs b/Assets/Scripts/ScriptableObjects/BaseShipProperties.cs index 36a4c73..dbfe9c2 100644 --- a/Assets/Scripts/ScriptableObjects/BaseShipProperties.cs +++ b/Assets/Scripts/ScriptableObjects/BaseShipProperties.cs @@ -38,10 +38,14 @@ public class BaseShipProperties : ScriptableObject public float boostAntiGravityFactor = 0.33f; [Tooltip("The factor by which the player looses control over the character when being stunned (0 = no control).")] public float stunLooseControlFactor = 0.1f; + [Tooltip("Time until the tackling player can be tackled again")] + public float tacklingGraceTime = 0.6f; + [Tooltip("Time until the tackled player can be tackled again")] + public float tackledGraceTime = 0.6f; [Tooltip("The time it takes for a critically stunned character to be controlable again.")] - public float tackleCriticalStunTime = 0.6f; + public float tackledCriticalStunTime = 0.6f; [Tooltip("The time it takes for a normally stunned character to be controlable again.")] - public float tackleBodyStunTime = 0.3f; + public float tackledBodyStunTime = 0.3f; [Tooltip("The power with which the character is tackled away, when hit critically.")] public float criticalTacklePowerFactor = 60f; [Tooltip("The power with which the character is tackled away, when hit normally.")] diff --git a/Assets/Scripts/ScriptableObjects/ShipProperties.cs b/Assets/Scripts/ScriptableObjects/ShipProperties.cs index 6c91e33..947c8d5 100644 --- a/Assets/Scripts/ScriptableObjects/ShipProperties.cs +++ b/Assets/Scripts/ScriptableObjects/ShipProperties.cs @@ -15,6 +15,8 @@ public class ShipProperties : ScriptableObject public ShipInputHandler shipInput = null; [Tooltip("Name of the ship (relevant to UI and lore context).")] public string shipName = "SpaceyMcShipface"; + [Tooltip("The main color of the ship.")] + public Color shipHullColor = Color.magenta; [Tooltip("The acceleration applied on thrust input.")] [Range(0.0f, 2.0f)] @@ -122,19 +124,33 @@ public class ShipProperties : ScriptableObject public float stunLooseControlFactor { get => baseProps.stunLooseControlFactor * stunLooseControlFactorModifier; } + [Tooltip("Time until the tackling player can be tackled again")] + [Range(0.0f, 2.0f)] + public float tacklingGraceTimeModifier = 1; + [HideInInspector] + public float tacklingGraceTime + { get => baseProps.tacklingGraceTime * tacklingGraceTimeModifier; } + [Tooltip("Time until the tackled player can be tackled again")] + + [Range(0.0f, 2.0f)] + public float tackledGraceTimeModifier = 1; + [HideInInspector] + public float tackledGraceTime + { get => baseProps.tackledGraceTime * tackledGraceTimeModifier; } + [Tooltip("The time it takes for a critically stunned character to be controlable again.")] [Range(0.0f, 2.0f)] public float tackleCriticalStunTimeModifier = 1; [HideInInspector] - public float tackleCriticalStunTime - { get => baseProps.tackleCriticalStunTime * tackleCriticalStunTimeModifier; } + public float tackledCriticalStunTime + { get => baseProps.tackledCriticalStunTime * tackleCriticalStunTimeModifier; } [Tooltip("The time it takes for a normally stunned character to be controlable again.")] [Range(0.0f, 2.0f)] public float tackleBodyStunTimeModifier = 1; [HideInInspector] - public float tackleBodyStunTime - { get => baseProps.tackleBodyStunTime * tackleBodyStunTimeModifier; } + public float tackledBodyStunTime + { get => baseProps.tackledBodyStunTime * tackleBodyStunTimeModifier; } [Tooltip("The power with which the character is tackled away, when hit critically.")] [Range(0.0f, 2.0f)] diff --git a/Assets/Scripts/Ship.cs b/Assets/Scripts/Ship.cs index e778370..b77b3fe 100644 --- a/Assets/Scripts/Ship.cs +++ b/Assets/Scripts/Ship.cs @@ -4,14 +4,15 @@ using static AffectingForcesManager; using ShipHandling; using Managers; using Unity.Mathematics; -using FishNet.Object; -using FishNet.Connection; -using FishNet.Example.ColliderRollbacks; using FORGE3D; +using PrimeTween; +using log4net; +using System.Reflection; -public class Ship : NetworkBehaviour +public class Ship : MonoBehaviour { + private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public int InstanceID { get; private set; } public ShipProperties props; public ShipState state; @@ -24,6 +25,7 @@ public class Ship : NetworkBehaviour public ParticleSystem smokeTrailEffect; public F3DFXController fireController; + public MeshRenderer bodyMeshRenderer; private AffectingForcesManager forceManager; private Rigidbody body; @@ -33,6 +35,7 @@ public class Ship : NetworkBehaviour private bool isCriticalTackle = false; private bool isTackled = false; private float tackledTime = 0f; + private Tween tackleIgnoreTween = new(); private bool isFiring = false; // Current Zone the player occupies private Zone zone = Zone.NimbleZone; @@ -77,7 +80,8 @@ public class Ship : NetworkBehaviour tackleDetectors = GetComponentsInChildren(); foreach (TackleDetection td in tackleDetectors) { - td.TackleResponse.AddListener(StartTackleResponse); + td.TackledResponse += TackledResponse; + td.TacklingResponse += TacklingResponse; } } @@ -85,7 +89,8 @@ public class Ship : NetworkBehaviour { foreach (TackleDetection td in tackleDetectors) { - td.TackleResponse.RemoveAllListeners(); + td.TackledResponse = null; + td.TacklingResponse = null; } } @@ -171,6 +176,7 @@ public class Ship : NetworkBehaviour || zone != Zone.NimbleZone) { body.AddForce(boostedAcceleration, ForceMode.Acceleration); + } if (currentVelocity.magnitude >= props.absolutMaxVelocity && zone == Zone.NimbleZone) { @@ -308,7 +314,10 @@ public class Ship : NetworkBehaviour } /// - /// Logic which sets the isTackled state. + /// Logic which sets the tackled member variables and + /// updates them over time. + /// State logic depends on these variables and is responsible + /// for certain tackle behavior. /// /// Use true to process a tackle hit void UpdateTackleResponse(bool gotTackled = false) @@ -316,8 +325,8 @@ public class Ship : NetworkBehaviour if (gotTackled && !isTackled) { isTackled = true; - tackledTime = isCriticalTackle ? props.tackleCriticalStunTime : - props.tackleBodyStunTime; + tackledTime = isCriticalTackle ? props.tackledCriticalStunTime : + props.tackledBodyStunTime; return; } tackledTime -= Time.deltaTime; @@ -330,29 +339,71 @@ public class Ship : NetworkBehaviour } /// - /// Called by the collision regions which detect tackling. - /// Adds resulting forces to the ship and intiates the tackle - /// response. + /// Disable tackle responeses for a given time + /// + async void TemporarilyIgnoreTackles(float duration) + { + if (tackleIgnoreTween.isAlive) + return; + tackleIgnoreTween = Tween.Delay(duration); + await tackleIgnoreTween; + } + + private bool IgnoreTackle() + { + return tackleIgnoreTween.isAlive; + } + + /// + /// Response logic if the ship is tackling an opponend. + /// + void TacklingResponse() + { + if (IgnoreTackle()) + return; + Log.Debug($"{props.shipName} is tackling."); + TemporarilyIgnoreTackles(props.tacklingGraceTime); + } + + /// + /// Called by the collision regions of the ship being tackled by an opponent. + /// Adds resulting forces to the ship and intiates the tackle response. /// /// Kind of the tackle. Depends on collision region. /// Object which has collided with the collision region. - void StartTackleResponse(TackleKind tackleKind, Collider collider) + void TackledResponse(TackleKind tackleKind, Collider collider) { - // TODO: The one who tackled first should be exempt from knockback in some way + if (IgnoreTackle()) + return; + TemporarilyIgnoreTackles(props.tackledGraceTime); + float tacklePowerFactor = props.criticalTacklePowerFactor; - if (tackleKind == TackleKind.Critical) + if (tackleKind == TackleKind.IncomingCritical) { isCriticalTackle = true; + Log.Debug($"{props.shipName} has been tackled critically."); } - else + else if (tackleKind == TackleKind.IncomingNormal) { isCriticalTackle = false; tacklePowerFactor = props.normalTacklePowerFactor; + Log.Debug($"{props.shipName} has been tackled."); } Vector3 colliderVelocity = collider.attachedRigidbody.velocity; - Vector3 tackleDirection = transform.position - collider.transform.position; + //Log.Debug("velocity " + colliderVelocity); - body.AddForce(colliderVelocity.magnitude * tackleDirection * tacklePowerFactor, + + //Log.Debug("angle " + angle); + + //Log.Debug("outvector " + outVector); + Vector3 force = colliderVelocity * tacklePowerFactor; + Vector3 resultForce = force / Math.Max(force.magnitude / 4000, 1); + + resultForce = resultForce / Math.Max(0.001f, Math.Min(resultForce.magnitude / 500, 1)); + Log.Debug(resultForce.magnitude); + + + body.AddForce(resultForce, ForceMode.Acceleration); UpdateTackleResponse(true); } @@ -405,10 +456,12 @@ public class Ship : NetworkBehaviour if (isTackled && !isCriticalTackle) { BeingTackledSound.PlayAudio(false, true); + cameraOperator.ShakeCam(0.2f); } if (isCriticalTackle) { BeingCriticallyTackledSound.PlayAudio(false, true); + cameraOperator.ShakeCam(0.4f); } if (!isTackled) { @@ -454,14 +507,5 @@ public class Ship : NetworkBehaviour } } - // private void Seeker() - // { - // var offset = Quaternion.Euler(UnityEngine.Random.onUnitSphere); - // F3DPoolManager.Pools["GeneratedPool"].Spawn(muzzle, transform.position + shootExitOffset); - // var newGO = - // F3DPoolManager.Pools["GeneratedPool"].Spawn(projectile, transform.position + shootExitOffset, - // offset * transform.localRotation, null).gameObject; - // F3DAudioController.instance.SeekerShot(transform.position); - // } } diff --git a/Assets/Scripts/ShipState.cs b/Assets/Scripts/ShipState.cs index 5dd15cb..fcd693f 100644 --- a/Assets/Scripts/ShipState.cs +++ b/Assets/Scripts/ShipState.cs @@ -1,3 +1,4 @@ +using FishNet.Object.Prediction; using UnityEngine; namespace ShipHandling @@ -17,4 +18,5 @@ namespace ShipHandling public bool IsFrozen = false; public bool reset = false; } + } diff --git a/Assets/Scripts/TackleDetection.cs b/Assets/Scripts/TackleDetection.cs index 880c94d..fa87e3d 100644 --- a/Assets/Scripts/TackleDetection.cs +++ b/Assets/Scripts/TackleDetection.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; using UnityEngine.Events; @@ -7,7 +8,8 @@ using UnityEngine.Events; public class TackleDetection : MonoBehaviour { [SerializeField] private TackleKind tackleKind; - public UnityEvent TackleResponse; + public Action TackledResponse; + public Action TacklingResponse; /// /// Invokes the fitting tackle response on trigger entered. @@ -15,12 +17,31 @@ public class TackleDetection : MonoBehaviour /// void OnTriggerEnter(Collider collider) { - if (collider.tag != "Spike" && collider.tag != "Bumper") + if (!(collider.tag == "Spike" || + collider.tag == "Bumper" || + collider.tag == "Vulnerable")) { return; } - TackleResponse.Invoke(tackleKind, collider); + + switch (collider.tag) + { + case "Spike": + // Critical for weak spots + TackledResponse.Invoke(tackleKind, collider); + break; + case "Bumper": + // Always normal tackle + TackledResponse.Invoke(TackleKind.IncomingNormal, collider); + break; + case "Vulnerable": + if (tackleKind == TackleKind.OutgoingCritical || + tackleKind == TackleKind.OutgoingNormal) + TacklingResponse.Invoke(); + break; + } + } } -public enum TackleKind { Critical, Normal } \ No newline at end of file +public enum TackleKind { IncomingCritical, IncomingNormal, OutgoingCritical, OutgoingNormal } \ No newline at end of file