1
Fork 0
mirror of https://github.com/Steffo99/bleach-beach.git synced 2024-12-04 19:04:19 +00:00

Add basic AI

This commit is contained in:
Steffo 2018-08-13 02:58:16 +02:00
parent 1987498444
commit 7e2278dc7c
11 changed files with 483 additions and 47 deletions

169
Assets/Prefabs/Enemy.prefab generated Normal file
View file

@ -0,0 +1,169 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_SourcePrefab: {fileID: 0}
m_RootGameObject: {fileID: 1195403025493360}
m_IsPrefabAsset: 1
--- !u!1 &1195403025493360
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 6
m_Component:
- component: {fileID: 4056561897088050}
- component: {fileID: 212864900431362760}
- component: {fileID: 50337207293964320}
- component: {fileID: 61036691294505782}
- component: {fileID: 114327601929205558}
- component: {fileID: 114122030605112200}
m_Layer: 9
m_Name: Enemy
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4056561897088050
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1195403025493360}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 21.96, y: 36.57, z: 0}
m_LocalScale: {x: 2.648, y: 0.903, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!50 &50337207293964320
Rigidbody2D:
serializedVersion: 4
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1195403025493360}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 1
m_Mass: 2.391144
m_LinearDrag: 0
m_AngularDrag: 0.05
m_GravityScale: 1
m_Material: {fileID: 6200000, guid: 704f912fbe8bba74ebedd5a5f7bff08f, type: 2}
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 0
--- !u!61 &61036691294505782
BoxCollider2D:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1195403025493360}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
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.5, y: 0.5}
oldSize: {x: 1, y: 1}
newSize: {x: 1, y: 1}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
--- !u!114 &114122030605112200
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1195403025493360}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e1de68aef1b6a89419a36f3455e25bf3, type: 3}
m_Name:
m_EditorClassIdentifier:
fishCaught: 0
--- !u!114 &114327601929205558
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1195403025493360}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 705389440a45f5f48aa5ede6519821e4, type: 3}
m_Name:
m_EditorClassIdentifier:
maximumDistanceFromFish: 1
timeBeforeChangingTarget: 10
horizontalSpeed: 5
verticalSpeed: 30
shootForce: 5
harpoon: {fileID: 1737609814504882, guid: 288f16ae5eaa16440b89da431723b1c2, type: 2}
harpoonAvailable: 1
maxJetFuel: 1
jetFuelRechargeSpeed: 0.1
--- !u!212 &212864900431362760
SpriteRenderer:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1195403025493360}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 4294967295
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: be5eaf9abd3481b489d582a8f1a41508, type: 3}
m_Color: {r: 1, g: 0, b: 0, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0

8
Assets/Prefabs/Enemy.prefab.meta generated Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8a1e5fa769b403340be7a2808b56d69c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -21,7 +21,7 @@ GameObject:
- component: {fileID: 4347951085211458}
- component: {fileID: 120926356996093036}
- component: {fileID: 114113591002818490}
m_Layer: 8
m_Layer: 0
m_Name: Chain
m_TagString: Untagged
m_Icon: {fileID: 0}
@ -40,7 +40,7 @@ GameObject:
- component: {fileID: 50840653617852040}
- component: {fileID: 114633804764434460}
- component: {fileID: 61123955855276598}
m_Layer: 8
m_Layer: 0
m_Name: Harpoon
m_TagString: Untagged
m_Icon: {fileID: 0}

View file

@ -85,7 +85,7 @@ Transform:
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1506768218425990}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 4.27, y: 42.06, z: 0}
m_LocalPosition: {x: 4.27, y: 40.291958, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4419769467158982}
@ -126,7 +126,7 @@ Transform:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1884810528837284}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: 0.4695518, w: 0.88290495}
m_LocalPosition: {x: -0.08000004, y: 0.61999893, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
@ -263,7 +263,7 @@ SpriteRenderer:
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: bdd08b099cc1c614096f43a9ccf99b59, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipX: 1
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 0.48, y: 1.02}
@ -309,7 +309,7 @@ SpriteRenderer:
m_SortingOrder: 2
m_Sprite: {fileID: 21300000, guid: 1f841006c9147454d8eca3d3cae86c0f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 1
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1.34, y: 0.65}

178
Assets/Scenes/Game.unity generated
View file

@ -150,7 +150,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
propertyPath: m_RootOrder
value: 11
value: 12
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
@ -212,6 +212,16 @@ Prefab:
propertyPath: m_Name
value: Fish Spawner (1)
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: spawnTime
value: 60
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: randomFactor
value: 30
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 343a89599f7365845937eb14b4669b20, type: 2}
m_IsPrefabAsset: 0
@ -252,66 +262,56 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4978811670595372, guid: 633eed510cb97614896a65613c2eb772, type: 2}
propertyPath: m_RootOrder
value: 4
value: 6
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 633eed510cb97614896a65613c2eb772, type: 2}
m_IsPrefabAsset: 0
--- !u!1001 &284866319
--- !u!1001 &317854633
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.x
value: 7.9
value: 21.96
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.y
value: 29.9
value: 36.57
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_RootOrder
value: 12
value: 2
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: sea
value:
objectReference: {fileID: 2008841353}
- target: {fileID: 1634593922401586, guid: 343a89599f7365845937eb14b4669b20, type: 2}
- target: {fileID: 1195403025493360, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_Name
value: Fish Spawner (5)
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: spawnTime
value: 20
value: Enemy (1)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 343a89599f7365845937eb14b4669b20, type: 2}
m_SourcePrefab: {fileID: 100100000, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
m_IsPrefabAsset: 0
--- !u!1001 &391017218
Prefab:
@ -350,7 +350,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4059627635461364, guid: acb6270a21e7fa744878210a4df90d27, type: 2}
propertyPath: m_RootOrder
value: 2
value: 4
objectReference: {fileID: 0}
- target: {fileID: 114070643257783382, guid: acb6270a21e7fa744878210a4df90d27,
type: 2}
@ -447,7 +447,7 @@ RectTransform:
m_Children:
- {fileID: 949267804}
m_Father: {fileID: 0}
m_RootOrder: 5
m_RootOrder: 20
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@ -505,7 +505,12 @@ Prefab:
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: spawnTime
value: 35
value: 20
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: randomFactor
value: 10
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 343a89599f7365845937eb14b4669b20, type: 2}
@ -547,7 +552,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4023639078503100, guid: 0514a38f22bae454d821a12517a141c4, type: 2}
propertyPath: m_RootOrder
value: 3
value: 5
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 0514a38f22bae454d821a12517a141c4, type: 2}
@ -782,6 +787,16 @@ Prefab:
propertyPath: sea
value:
objectReference: {fileID: 2008841353}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: spawnTime
value: 60
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
propertyPath: randomFactor
value: 30
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 343a89599f7365845937eb14b4669b20, type: 2}
m_IsPrefabAsset: 0
@ -841,6 +856,52 @@ Prefab:
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 343a89599f7365845937eb14b4669b20, type: 2}
m_IsPrefabAsset: 0
--- !u!1001 &1105789933
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.x
value: 39.292458
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.y
value: 36.612633
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1195403025493360, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_Name
value: Enemy (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
m_IsPrefabAsset: 0
--- !u!1 &1147089289
GameObject:
m_ObjectHideFlags: 0
@ -901,7 +962,7 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1240811157
Prefab:
@ -940,7 +1001,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
propertyPath: m_RootOrder
value: 9
value: 10
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
@ -991,7 +1052,12 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4279439219186522, guid: 1cf703958a669d942a42326499701367, type: 2}
propertyPath: m_RootOrder
value: 1
value: 3
objectReference: {fileID: 0}
- target: {fileID: 212928515413584804, guid: 1cf703958a669d942a42326499701367,
type: 2}
propertyPath: m_FlipX
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 1cf703958a669d942a42326499701367, type: 2}
@ -1150,7 +1216,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 4955254497044876, guid: 343a89599f7365845937eb14b4669b20, type: 2}
propertyPath: m_RootOrder
value: 10
value: 11
objectReference: {fileID: 0}
- target: {fileID: 114324088513504716, guid: 343a89599f7365845937eb14b4669b20,
type: 2}
@ -1169,6 +1235,48 @@ Prefab:
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 343a89599f7365845937eb14b4669b20, type: 2}
m_IsPrefabAsset: 0
--- !u!1001 &1861714896
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.x
value: -31.72
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.y
value: 37.1
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4056561897088050, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
propertyPath: m_RootOrder
value: 19
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 8a1e5fa769b403340be7a2808b56d69c, type: 2}
m_IsPrefabAsset: 0
--- !u!1 &2008841353 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 1259758189242624, guid: 4dc0408b236da9847b1c799161bbd70a,

View file

@ -19,7 +19,9 @@ public class Cannon : MonoBehaviour {
{
hullSpriteRenderer = hull.GetComponent<SpriteRenderer>();
spriteRenderer = GetComponent<SpriteRenderer>();
//Disable enemy and player collisions
Physics2D.IgnoreLayerCollision(8, 8);
Physics2D.IgnoreLayerCollision(9, 9);
}
private void Update ()
@ -41,6 +43,7 @@ public class Cannon : MonoBehaviour {
harpoonInstance.transform.rotation = transform.rotation;
harpoonInstance.GetComponent<Rigidbody2D>().AddForce(direction * force);
harpoonInstance.GetComponent<SpriteRenderer>().flipX = spriteRenderer.flipX;
harpoonInstance.layer = 8;
Linker linker = harpoonInstance.GetComponentInChildren<Linker>();
linker.firstObject = gameObject;
linker.secondObject = harpoonInstance;

View file

@ -0,0 +1,129 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyShipAi : MonoBehaviour {
public float maximumDistanceFromFish = 2f;
public float timeBeforeChangingTarget = 10f;
public float horizontalSpeed = 5f;
public float verticalSpeed = 30f;
public float shootForce = 5f;
public GameObject harpoon;
public bool harpoonAvailable = true;
public float maxJetFuel = 2f;
public float jetFuelRechargeSpeed = 0.1f;
private GameObject target = null;
private Rigidbody2D rb;
private SpriteRenderer spriteRenderer;
private float timeSinceLastTarget = 0f;
private float jetFuel;
private bool usingJet;
void Start () {
rb = GetComponent<Rigidbody2D>();
spriteRenderer = GetComponent<SpriteRenderer>();
jetFuel = maxJetFuel;
}
void Update () {
timeBeforeChangingTarget += Time.deltaTime;
//Find a target fish
if(target == null || timeSinceLastTarget > timeBeforeChangingTarget)
{
if(target != null)
{
target.GetComponent<FishAi>().targetedBy = null;
}
target = FindClosestFish(GameObject.FindGameObjectsWithTag("Fish"));
if (target != null)
{
target.GetComponent<FishAi>().targetedBy = gameObject;
}
timeBeforeChangingTarget = 0f;
}
}
void FixedUpdate()
{
//If the bot has a target
if(target != null)
{
//Slow down when near the fish
float power = Mathf.Clamp((Mathf.Abs(transform.position.x - target.transform.position.x) / maximumDistanceFromFish) - 1f, 0f, 1f);
//Shoot an harpoon if it's close enough and it's available
if (power == 0f && harpoonAvailable)
{
//Disable the jetpack
usingJet = false;
//Find the direction between the fish and the ship
Vector3 direction = (target.transform.position - transform.position).normalized;
//Shoot the harpoon
GameObject harpoonInstance = Instantiate(harpoon);
harpoonInstance.transform.position = transform.position + direction;
harpoonInstance.transform.rotation = transform.rotation;
harpoonInstance.GetComponent<Rigidbody2D>().AddForce(direction * shootForce);
harpoonInstance.GetComponent<SpriteRenderer>().flipX = spriteRenderer.flipX;
harpoonInstance.layer = 9;
Linker linker = harpoonInstance.GetComponentInChildren<Linker>();
linker.firstObject = gameObject;
linker.secondObject = harpoonInstance;
harpoonAvailable = false;
}
//Apply a force towards that direction if too far away
else
{
//Right
if (transform.position.x - target.transform.position.x < 0f)
{
rb.AddForce(Vector2.right * horizontalSpeed * power);
spriteRenderer.flipX = true;
}
//Left
else
{
rb.AddForce(Vector2.right * -horizontalSpeed * power);
spriteRenderer.flipX = false;
}
//Enable the jetpack
if(jetFuel == maxJetFuel)
{
usingJet = true;
}
//Use the jetpack
if(usingJet)
{
jetFuel -= Time.fixedDeltaTime;
rb.AddForce(Vector2.up * verticalSpeed);
if(jetFuel <= 0)
{
usingJet = false;
}
}
else
{
jetFuel = Mathf.Clamp(jetFuel + Time.fixedDeltaTime * jetFuelRechargeSpeed, 0f, maxJetFuel);
}
}
}
}
GameObject FindClosestFish(GameObject[] fish)
{
GameObject result = null;
float minimumDistance = Mathf.Infinity;
foreach (GameObject fishInstance in fish)
{
if (fishInstance.GetComponent<FishAi>().targetedBy != null) continue;
float distance = Vector3.Distance(fishInstance.transform.position, transform.position);
if (distance < minimumDistance)
{
minimumDistance = distance;
result = fishInstance;
}
}
return result;
}
}

11
Assets/Scripts/EnemyShipAi.cs.meta generated Normal file
View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 705389440a45f5f48aa5ede6519821e4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -8,6 +8,7 @@ public class FishAi : MonoBehaviour {
public float speed = 2f;
public GameObject hook = null;
public GameObject sea;
public GameObject targetedBy;
private Vector3 direction;
private Rigidbody2D rb;

View file

@ -27,18 +27,25 @@ public class Harpoon : MonoBehaviour {
{
if (transform.position.y > linker.firstObject.transform.position.y)
{
rb.MoveRotation(Vector2.Angle(transform.position - linker.firstObject.transform.position, Vector2.right) - 90f);
}
else
{
rb.MoveRotation(-Vector2.Angle(transform.position - linker.firstObject.transform.position, Vector2.right) - 90f);
}
rb.MovePosition(Vector3.MoveTowards(transform.position, linker.firstObject.transform.position, returnSpeed * Time.deltaTime));
if(Vector3.Distance(transform.position, linker.firstObject.transform.position) < 0.2f)
{
linker.firstObject.GetComponent<Cannon>().harpoonAvailable = true;
Cannon cannon = linker.firstObject.GetComponent<Cannon>();
if(cannon != null)
{
cannon.harpoonAvailable = true;
}
else
{
EnemyShipAi enemyShipAi = linker.firstObject.GetComponent<EnemyShipAi>();
enemyShipAi.harpoonAvailable = true;
}
Destroy(gameObject);
}
}

View file

@ -6,10 +6,10 @@ public class PlayerMovement : MonoBehaviour {
private Rigidbody2D rb;
public GameObject hull;
public float horizontalShipSpeed = 50;
public float verticalShipSpeed = 20;
public float horizontalShipSpeed = 5f;
public float verticalShipSpeed = 30;
public float maxJetFuel = 2f;
public float jetFuelRechargeSpeed = 0.5f;
public float jetFuelRechargeSpeed = 0.1f;
private float jetFuel;
void Start () {