MIRV Missiles!

Implemented missiles that turn into more missiles
Guided projectile code is much more robust now
This commit is contained in:
Reinier Vens 2021-01-28 02:42:39 +00:00
commit 6130eca5f9
15 changed files with 20347 additions and 245 deletions

View file

@ -0,0 +1,78 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Smoke Trail 1
m_Shader: {fileID: 4800000, guid: 46776b9fa35a437448f683f31b04d68d, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 82c211cd7b28abb4a9e4ee77e8bd1b03, type: 3}
m_Scale: {x: 0.5, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 255.99997, g: 255.99997, b: 255.99997, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []

View file

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

View file

@ -61,7 +61,7 @@ Material:
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _Glossiness: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0

View file

@ -47,7 +47,7 @@ ParticleSystem:
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1
@ -4840,7 +4840,7 @@ ParticleSystem:
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1
@ -9678,6 +9678,8 @@ GameObject:
- component: {fileID: 4361801158873524}
- component: {fileID: 198656289721292014}
- component: {fileID: 199514137936353666}
- component: {fileID: 7959687425165588245}
- component: {fileID: 5039682960400839411}
m_Layer: 0
m_Name: SmallExplosion
m_TagString: Untagged
@ -9712,12 +9714,12 @@ ParticleSystem:
serializedVersion: 7
lengthInSec: 2
simulationSpeed: 1
stopAction: 0
stopAction: 3
cullingMode: 3
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1
@ -14571,6 +14573,30 @@ ParticleSystemRenderer:
m_Mesh2: {fileID: 0}
m_Mesh3: {fileID: 0}
m_MaskInteraction: 0
--- !u!114 &7959687425165588245
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1828176872806910}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1281fe44325f9b548aa42dc331b17266, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &5039682960400839411
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1828176872806910}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: db021a309de3d324588c5603de40c29f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1834016579923706
GameObject:
m_ObjectHideFlags: 0
@ -14618,7 +14644,7 @@ ParticleSystem:
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1

View file

@ -47,7 +47,7 @@ ParticleSystem:
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1
@ -4925,7 +4925,7 @@ ParticleSystem:
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1
@ -9859,7 +9859,7 @@ ParticleSystem:
ringBufferMode: 0
ringBufferLoopRange: {x: 0, y: 1}
looping: 1
prewarm: 1
prewarm: 0
playOnAwake: 1
useUnscaledTime: 0
autoRandomSeed: 1

View file

@ -271,7 +271,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727314640817046611}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1727314640956741321}
@ -409,7 +409,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727314641991746687}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1107077262217616032}
@ -487,7 +487,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1727314642051522539}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 7279045006683137756}
@ -585,7 +585,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1796972107386253351}
m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 6148628377977073562}
@ -797,7 +797,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3495863821383666329}
m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 6148628377977073562}
@ -1076,6 +1076,7 @@ MonoBehaviour:
- {fileID: 6946734302097032818}
- {fileID: 2664341253667465548}
- {fileID: 3028840165937219683}
RadiatorHardpoints: []
ThrusterHardpoints: []
WeaponHardpoints:
- {fileID: 1727314640956741322}
@ -1111,7 +1112,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6946734302097032817}
m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067}
m_LocalPosition: {x: 1.4210855e-14, y: 0, z: 0}
m_LocalPosition: {x: 1.4210855e-14, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 6148628377977073562}
@ -1172,7 +1173,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8304154918997209427}
m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -1.13, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 6148628377977073562}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9ae03c53abf72ae4a8154b41a8ccb3a5
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -57,29 +57,123 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 56c973b8f3781c848b6530c2e7efce05, type: 3}
m_Name:
m_EditorClassIdentifier:
ChildProjectile: {fileID: 0}
Children: 0
SplitTime: 0
SplitSeparationForwardness: 0
Particles: {fileID: 2200213684891960502}
FadeOutTime: 1
ThrustCurve:
serializedVersion: 2
m_Curve: []
m_Curve:
- serializedVersion: 3
time: 0
value: 0.5
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 1
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
GuidanceCurve:
serializedVersion: 2
m_Curve: []
m_Curve:
- serializedVersion: 3
time: 0
value: 0.5
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.9608628
value: 0.9977624
inSlope: 0.112816334
outSlope: 0.112816334
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
LiftCurve:
serializedVersion: 2
m_Curve: []
m_Curve:
- serializedVersion: 3
time: 0.0023040771
value: 0.73749924
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
- serializedVersion: 3
time: 0.17710531
value: 0.81192774
inSlope: -0.8198446
outSlope: -0.8198446
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.38233894
value: 0.09487492
inSlope: -0.08619904
outSlope: -0.08619904
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.7232835
value: 0.09761685
inSlope: 0.13605312
outSlope: 0.13605312
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.5938519
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0
outWeight: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
Frequency: 0
Thrust: 0
TopSpeed: 0
Frequency: 0.25
Thrust: 500
TopSpeed: 250
Source: {fileID: 0}
Target: {fileID: 0}
--- !u!1 &2200213684891960497
@ -4946,7 +5040,7 @@ GameObject:
- component: {fileID: 5148235482537864796}
- component: {fileID: 8540408454168213454}
m_Layer: 0
m_Name: Micromissile Manager
m_Name: Micromissile
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

View file

@ -750,10 +750,10 @@ RectTransform:
m_Father: {fileID: 1783772015}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 639.455, y: -40}
m_SizeDelta: {x: 329.91, y: 56}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &101395091
MonoBehaviour:
@ -10362,12 +10362,6 @@ GameObject:
- component: {fileID: 817565121}
- component: {fileID: 817565129}
- component: {fileID: 817565128}
- component: {fileID: 817565127}
- component: {fileID: 817565126}
- component: {fileID: 817565125}
- component: {fileID: 817565124}
- component: {fileID: 817565123}
- component: {fileID: 817565122}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
@ -10394,78 +10388,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &817565122
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 817565120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9643e74593988274bbed9adf40384e48, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &817565123
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 817565120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3468b3db8d419c745b12124f6432696b, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &817565124
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 817565120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79db090dc9e4db245821e8b89b0e208e, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &817565125
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 817565120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a81a9b6bec6b4f4fba7e0047cd989f6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &817565126
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 817565120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b8ce8424f238d6842bd8b09c0cca1ac4, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &817565127
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 817565120}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: aa69c313aba23f945b760e79c45083ad, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &817565128
MonoBehaviour:
m_ObjectHideFlags: 0
@ -11458,10 +11380,10 @@ RectTransform:
m_Father: {fileID: 1783772015}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 877.83, y: -40}
m_SizeDelta: {x: 146.84, y: 56}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &931657852
MonoBehaviour:
@ -16475,10 +16397,10 @@ RectTransform:
m_Father: {fileID: 1783772015}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 1048.375, y: -40}
m_SizeDelta: {x: 194.25, y: 56}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1464157086
MonoBehaviour:
@ -17533,12 +17455,12 @@ PrefabInstance:
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
@ -17558,7 +17480,7 @@ PrefabInstance:
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -16
objectReference: {fileID: 0}
- target: {fileID: 1713457305180270767, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
@ -18389,12 +18311,12 @@ PrefabInstance:
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
@ -18414,7 +18336,7 @@ PrefabInstance:
- target: {fileID: 878382121558056004, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -16
objectReference: {fileID: 0}
- target: {fileID: 1713457305180270767, guid: 2758dfa2744d7ad4d8877545189d116e,
type: 3}
@ -19529,7 +19451,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &1726632265
RectTransform:
m_ObjectHideFlags: 0
@ -21012,11 +20934,11 @@ MonoBehaviour:
Background: {fileID: 817565128}
Icon: {fileID: 109242182}
PointerClickTrigger: {fileID: 0}
BeginDragTrigger: {fileID: 817565125}
DragTrigger: {fileID: 817565124}
EndDragTrigger: {fileID: 817565126}
PointerEnterTrigger: {fileID: 817565123}
PointerExitTrigger: {fileID: 817565122}
BeginDragTrigger: {fileID: 0}
DragTrigger: {fileID: 0}
EndDragTrigger: {fileID: 0}
PointerEnterTrigger: {fileID: 0}
PointerExitTrigger: {fileID: 0}
--- !u!114 &1889622745
MonoBehaviour:
m_ObjectHideFlags: 0
@ -23393,11 +23315,11 @@ MonoBehaviour:
Background: {fileID: 7628189704657849089}
Icon: {fileID: 1504178997104738391}
PointerClickTrigger: {fileID: 0}
BeginDragTrigger: {fileID: 5170175554978942203}
DragTrigger: {fileID: 5103404206460645835}
EndDragTrigger: {fileID: 4161198292510736774}
PointerEnterTrigger: {fileID: 7815796106915534771}
PointerExitTrigger: {fileID: 6665187639855154114}
BeginDragTrigger: {fileID: 0}
DragTrigger: {fileID: 0}
EndDragTrigger: {fileID: 0}
PointerEnterTrigger: {fileID: 0}
PointerExitTrigger: {fileID: 0}
--- !u!1001 &2279630454421103832
PrefabInstance:
m_ObjectHideFlags: 0
@ -27062,54 +26984,6 @@ MonoBehaviour:
m_FlexibleWidth: 2
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &4161198292510736774
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7628189704657849343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b8ce8424f238d6842bd8b09c0cca1ac4, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4447187362195032877
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7628189704657849343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: aa69c313aba23f945b760e79c45083ad, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &5103404206460645835
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7628189704657849343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 79db090dc9e4db245821e8b89b0e208e, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &5170175554978942203
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7628189704657849343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3a81a9b6bec6b4f4fba7e0047cd989f6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &5320608015878225385
MonoBehaviour:
m_ObjectHideFlags: 0
@ -27539,18 +27413,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &6665187639855154114
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7628189704657849343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9643e74593988274bbed9adf40384e48, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!222 &6770948969429432073
CanvasRenderer:
m_ObjectHideFlags: 0
@ -28937,12 +28799,6 @@ GameObject:
- component: {fileID: 7628189704657849088}
- component: {fileID: 7628189704657849090}
- component: {fileID: 7628189704657849089}
- component: {fileID: 4447187362195032877}
- component: {fileID: 4161198292510736774}
- component: {fileID: 5170175554978942203}
- component: {fileID: 5103404206460645835}
- component: {fileID: 7815796106915534771}
- component: {fileID: 6665187639855154114}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
@ -28950,18 +28806,6 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &7815796106915534771
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7628189704657849343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3468b3db8d419c745b12124f6432696b, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &7852865762198308775
MonoBehaviour:
m_ObjectHideFlags: 0

Binary file not shown.

View file

@ -10,6 +10,12 @@ using static Noise1D;
public class GuidedProjectile : MonoBehaviour
{
public Prototype HitEffect;
public Prototype ChildProjectile;
public int Children;
public float SplitTime;
public float SplitSeparationForwardness;
public float SplitSeparationVelocity;
public ParticleSystem Particles;
public float FadeOutTime;
public AnimationCurve ThrustCurve;
@ -25,7 +31,10 @@ public class GuidedProjectile : MonoBehaviour
private float _prevDist;
private bool _active;
private bool _alive;
private List<GuidedProjectile> _children = new List<GuidedProjectile>();
public float3 StartPosition { get; set; }
public float Range { get; set; }
public Vector3 Velocity { get; set; }
public float Damage { get; set; }
public float Penetration { get; set; }
@ -33,10 +42,6 @@ public class GuidedProjectile : MonoBehaviour
public DamageType DamageType { get; set; }
public Entity SourceEntity { get; set; }
void Awake()
{
}
void OnEnable()
{
_active = _alive = true;
@ -65,39 +70,97 @@ public class GuidedProjectile : MonoBehaviour
}
var diff = Target.position - transform.position;
var targetDist = diff.Flatland().magnitude;
if (_prevDist < targetDist)
var targetDist = diff.magnitude;
var position = (float3) t.position;
var sourceDist = length(StartPosition.xz - position.xz);
if (sourceDist > Range || _prevDist < targetDist)
{
StartCoroutine(FadeOut());
if (HitEffect != null)
{
var ht = HitEffect.Instantiate<Transform>();
ht.position = t.position;
}
return;
}
_prevDist = targetDist;
var position = (float3) t.position;
var sourceDist = length(((float3) Source.position).xz - position.xz);
var curveLerp = 1 - targetDist / (sourceDist + targetDist);
var targetDistFlat = diff.Flatland().magnitude;
var curveLerp = 1 - targetDistFlat / (sourceDist + targetDistFlat);
var dir = diff.normalized;
var right = cross(dir, float3(0, 1, 0));
var up = cross(dir, right);
if (Children > 0 && SplitTime < curveLerp)
{
for (int i = 0; i < Children; i++)
{
var child = ChildProjectile.Instantiate<GuidedProjectile>();
child.StartPosition = child.transform.position = t.position;
_children.Add(child);
var randomDirection = normalize(Random.insideUnitCircle);
var perpendicularRandom = randomDirection.x * right + randomDirection.y * up;
child.Velocity = normalize(lerp(perpendicularRandom, dir, SplitSeparationForwardness)) * length(Velocity) * SplitSeparationVelocity;
child.Range = Range;
child.Damage = Damage;
child.Penetration = Penetration;
child.Spread = Spread;
child.DamageType = DamageType;
child.GuidanceCurve = GuidanceCurve;
child.LiftCurve = LiftCurve;
child.ThrustCurve = ThrustCurve;
child.Thrust = Thrust;
child.TopSpeed = TopSpeed;
child.Source = Source;
child.Target = Target;
child.SourceEntity = SourceEntity;
child.Frequency = Frequency;
child.Thrust = Thrust;
}
StartCoroutine(Kill());
if (HitEffect != null)
{
var ht = HitEffect.Instantiate<Transform>();
ht.position = t.position;
}
}
var dodge = normalize(lerp(
normalize(right * noise(Time.time * Frequency + _phase) + up * noise(Time.time * Frequency + (100 + _phase))),
Vector3.up, LiftCurve.Evaluate(curveLerp)));
var desired = Vector3.Slerp(dodge, dir, GuidanceCurve.Evaluate(curveLerp)).normalized * TopSpeed;
var thrust = Thrust * ThrustCurve.Evaluate(curveLerp);
Velocity += (desired-Velocity) * (thrust * Time.deltaTime);
var thrustCurve = ThrustCurve.Evaluate(curveLerp);
var thrust = Thrust * thrustCurve;
var c = Color.white * thrustCurve;
c.a = 1;
Particles.startColor = c;
Velocity += (desired-Velocity).normalized * (thrust * Time.deltaTime);
}
var ray = new Ray(t.position, Velocity);
if (Physics.Raycast(ray, out var hit, Velocity.magnitude * Time.deltaTime, 1))
if(_alive)
{
var hull = hit.collider.GetComponent<HullCollider>();
if (hull)
var ray = new Ray(t.position, Velocity);
if (Physics.Raycast(ray, out var hit, Velocity.magnitude * Time.deltaTime, 1))
{
hull.SendHit(Damage, Penetration, Spread, DamageType, SourceEntity, hit, Velocity.normalized);
var hull = hit.collider.GetComponent<HullCollider>();
if (hull)
{
hull.SendHit(Damage, Penetration, Spread, DamageType, SourceEntity, hit, Velocity.normalized);
}
StartCoroutine(Kill());
if (HitEffect != null)
{
var ht = HitEffect.Instantiate<Transform>();
ht.SetParent(hit.collider.transform);
ht.position = hit.point;
return;
}
}
StartCoroutine(Kill());
t.position += Velocity * Time.deltaTime;
}
t.position += Velocity * Time.deltaTime;
}
IEnumerator FadeOut()
@ -107,7 +170,9 @@ public class GuidedProjectile : MonoBehaviour
while (Time.time - startTime < FadeOutTime)
{
var lerp = 1 - (Time.time - startTime) / FadeOutTime;
Particles.startColor = Color.white * lerp;
var c = Color.white * lerp;
c.a = 1;
Particles.startColor = c;
//var main = Particles.main;
//main.startColor = new ParticleSystem.MinMaxGradient { mode = ParticleSystemGradientMode.Color, color = Color.white * lerp };
yield return null;
@ -118,12 +183,21 @@ public class GuidedProjectile : MonoBehaviour
IEnumerator Kill()
{
_active = false;
_alive = false;
Particles.Stop(true, ParticleSystemStopBehavior.StopEmitting);
var startTime = Time.time;
var lifetime = Particles.main.startLifetime.constant;
while (Time.time - startTime < lifetime)
while (Time.time - startTime < lifetime || _children.Count > 0)
{
for (var index = 0; index < _children.Count; index++)
{
if (!_children[index].gameObject.activeSelf)
_children.RemoveAt(index--);
}
yield return null;
}
GetComponent<Prototype>().ReturnToPool();
}
}

View file

@ -18,7 +18,8 @@ public class GuidedProjectileManager : InstantWeaponEffectManager
p.Thrust = source.Entity.ItemManager.Evaluate(launcher.Thrust, item.EquippableItem, source.Entity);
var hp = source.Entity.Hardpoints[item.Position.x, item.Position.y];
var barrel = source.GetBarrel(hp);
p.transform.position = barrel.position;
p.StartPosition = p.transform.position = barrel.position;
p.Range = source.Entity.ItemManager.Evaluate(data.Range, item.EquippableItem, source.Entity);
p.Velocity = barrel.forward * source.Entity.ItemManager.Evaluate(launcher.LaunchSpeed, item.EquippableItem, source.Entity);
p.Damage = source.Entity.ItemManager.Evaluate(data.Damage, item.EquippableItem, source.Entity);
p.Penetration = source.Entity.ItemManager.Evaluate(data.Penetration, item.EquippableItem, source.Entity);

View file

@ -289,18 +289,21 @@ public class InventoryPanel : MonoBehaviour
_firstRect = cell.GetComponent<RectTransform>();
if (!thermal)
{
cell.PointerClickTrigger.OnPointerClickAsObservable()
.Subscribe(data => _onClick?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.BeginDragTrigger.OnBeginDragAsObservable()
.Subscribe(data => _onBeginDrag?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.DragTrigger.OnDragAsObservable()
.Subscribe(data => _onDrag?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.EndDragTrigger.OnEndDragAsObservable()
.Subscribe(data => _onEndDrag?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.PointerEnterTrigger.OnPointerEnterAsObservable()
.Subscribe(data => _onPointerEnter?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.PointerExitTrigger.OnPointerExitAsObservable()
.Subscribe(data => _onPointerExit?.OnNext(new InventoryEntityEventData(data, v, entity)));
if(cell.PointerClickTrigger)
{
cell.PointerClickTrigger.OnPointerClickAsObservable()
.Subscribe(data => _onClick?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.BeginDragTrigger.OnBeginDragAsObservable()
.Subscribe(data => _onBeginDrag?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.DragTrigger.OnDragAsObservable()
.Subscribe(data => _onDrag?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.EndDragTrigger.OnEndDragAsObservable()
.Subscribe(data => _onEndDrag?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.PointerEnterTrigger.OnPointerEnterAsObservable()
.Subscribe(data => _onPointerEnter?.OnNext(new InventoryEntityEventData(data, v, entity)));
cell.PointerExitTrigger.OnPointerExitAsObservable()
.Subscribe(data => _onPointerExit?.OnNext(new InventoryEntityEventData(data, v, entity)));
}
}
else
{

Binary file not shown.