Closes #162 대포 로직 변경
This commit is contained in:
parent
4c92f994c3
commit
4c1dc9c564
@ -38,7 +38,7 @@ RenderSettings:
|
|||||||
m_ReflectionIntensity: 1
|
m_ReflectionIntensity: 1
|
||||||
m_CustomReflection: {fileID: 0}
|
m_CustomReflection: {fileID: 0}
|
||||||
m_Sun: {fileID: 55264370}
|
m_Sun: {fileID: 55264370}
|
||||||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
m_IndirectSpecularColor: {r: 0.11325848, g: 0.48708495, b: 0.73601764, a: 1}
|
||||||
m_UseRadianceAmbientProbe: 0
|
m_UseRadianceAmbientProbe: 0
|
||||||
--- !u!157 &4
|
--- !u!157 &4
|
||||||
LightmapSettings:
|
LightmapSettings:
|
||||||
@ -93,7 +93,7 @@ LightmapSettings:
|
|||||||
m_ExportTrainingData: 0
|
m_ExportTrainingData: 0
|
||||||
m_TrainingDataDestination: TrainingData
|
m_TrainingDataDestination: TrainingData
|
||||||
m_LightProbeSampleCountMultiplier: 4
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
m_LightingDataAsset: {fileID: 112000000, guid: 5736bec67810b487292714d0ee92c603,
|
m_LightingDataAsset: {fileID: 112000000, guid: 90581f249edafa242846d362aac473f4,
|
||||||
type: 2}
|
type: 2}
|
||||||
m_LightingSettings: {fileID: 4890085278179872738, guid: eb906a94997a744cd99b204013bbc54c,
|
m_LightingSettings: {fileID: 4890085278179872738, guid: eb906a94997a744cd99b204013bbc54c,
|
||||||
type: 2}
|
type: 2}
|
||||||
@ -11027,7 +11027,7 @@ SpriteRenderer:
|
|||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
m_SortingLayerID: 0
|
m_SortingLayerID: 0
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 0
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 2
|
||||||
m_Sprite: {fileID: 21300000, guid: 76cb51117ead0a94ba2c9b11409a3c1b, type: 3}
|
m_Sprite: {fileID: 21300000, guid: 76cb51117ead0a94ba2c9b11409a3c1b, type: 3}
|
||||||
m_Color: {r: 1, g: 0, b: 0, a: 1}
|
m_Color: {r: 1, g: 0, b: 0, a: 1}
|
||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
@ -11179,7 +11179,7 @@ GameObject:
|
|||||||
m_Component:
|
m_Component:
|
||||||
- component: {fileID: 1286537730}
|
- component: {fileID: 1286537730}
|
||||||
m_Layer: 7
|
m_Layer: 7
|
||||||
m_Name: FirePos
|
m_Name: LaunchPosition
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: -5442936267250999957, guid: 0000000000000000d000000000000000, type: 0}
|
m_Icon: {fileID: -5442936267250999957, guid: 0000000000000000d000000000000000, type: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
@ -11193,13 +11193,13 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1286537729}
|
m_GameObject: {fileID: 1286537729}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0.2588191, y: 0, z: 0, w: 0.9659258}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 1.012, z: 1.322}
|
m_LocalPosition: {x: 0, y: 1.389, z: 0.929}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4529632010256581}
|
m_Father: {fileID: 4529632010256581}
|
||||||
m_LocalEulerAnglesHint: {x: 30, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!4 &1302515238 stripped
|
--- !u!4 &1302515238 stripped
|
||||||
Transform:
|
Transform:
|
||||||
m_CorrespondingSourceObject: {fileID: 412716, guid: e1c4cc5b9a7d0d7479734ea4167d417e,
|
m_CorrespondingSourceObject: {fileID: 412716, guid: e1c4cc5b9a7d0d7479734ea4167d417e,
|
||||||
@ -12785,8 +12785,8 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1485085414}
|
m_GameObject: {fileID: 1485085414}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0.3802585, y: 0.6187169, z: -0.46294743, w: 0.50820535}
|
m_LocalRotation: {x: 0.38026118, y: 0.61871386, z: -0.4629451, w: 0.508209}
|
||||||
m_LocalPosition: {x: -0.0014457703, y: 0, z: -0.0072784424}
|
m_LocalPosition: {x: -0.0015602112, y: 0, z: -0.007865906}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
@ -16357,12 +16357,12 @@ GameObject:
|
|||||||
- component: {fileID: 1913692421}
|
- component: {fileID: 1913692421}
|
||||||
- component: {fileID: 1913692422}
|
- component: {fileID: 1913692422}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Line
|
m_Name: CannonLineRenderer
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 0
|
m_StaticEditorFlags: 0
|
||||||
m_IsActive: 1
|
m_IsActive: 0
|
||||||
--- !u!4 &1913692421
|
--- !u!4 &1913692421
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -16371,7 +16371,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1913692420}
|
m_GameObject: {fileID: 1913692420}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0.16504757, y: -0, z: -0, w: 0.9862857}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
@ -16401,7 +16401,7 @@ LineRenderer:
|
|||||||
m_RenderingLayerMask: 1
|
m_RenderingLayerMask: 1
|
||||||
m_RendererPriority: 0
|
m_RendererPriority: 0
|
||||||
m_Materials:
|
m_Materials:
|
||||||
- {fileID: 0}
|
- {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_StaticBatchInfo:
|
m_StaticBatchInfo:
|
||||||
firstSubMesh: 0
|
firstSubMesh: 0
|
||||||
subMeshCount: 0
|
subMeshCount: 0
|
||||||
@ -16419,15 +16419,15 @@ LineRenderer:
|
|||||||
m_AutoUVMaxDistance: 0.5
|
m_AutoUVMaxDistance: 0.5
|
||||||
m_AutoUVMaxAngle: 89
|
m_AutoUVMaxAngle: 89
|
||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
m_SortingLayerID: 0
|
m_SortingLayerID: -1197429611
|
||||||
m_SortingLayer: 0
|
m_SortingLayer: 2
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_Positions:
|
m_Positions:
|
||||||
- {x: 0, y: 0, z: 0}
|
- {x: 0, y: 0, z: 0}
|
||||||
- {x: 0, y: 0, z: 1}
|
- {x: 0, y: 0, z: 1}
|
||||||
m_Parameters:
|
m_Parameters:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
widthMultiplier: 1
|
widthMultiplier: 0.1
|
||||||
widthCurve:
|
widthCurve:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Curve:
|
m_Curve:
|
||||||
@ -16445,8 +16445,8 @@ LineRenderer:
|
|||||||
m_RotationOrder: 4
|
m_RotationOrder: 4
|
||||||
colorGradient:
|
colorGradient:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
key0: {r: 1, g: 1, b: 1, a: 1}
|
key0: {r: 1, g: 0.5019608, b: 0, a: 1}
|
||||||
key1: {r: 1, g: 1, b: 1, a: 1}
|
key1: {r: 1, g: 0, b: 0, a: 1}
|
||||||
key2: {r: 0, g: 0, b: 0, a: 0}
|
key2: {r: 0, g: 0, b: 0, a: 0}
|
||||||
key3: {r: 0, g: 0, b: 0, a: 0}
|
key3: {r: 0, g: 0, b: 0, a: 0}
|
||||||
key4: {r: 0, g: 0, b: 0, a: 0}
|
key4: {r: 0, g: 0, b: 0, a: 0}
|
||||||
@ -16470,7 +16470,7 @@ LineRenderer:
|
|||||||
atime6: 0
|
atime6: 0
|
||||||
atime7: 0
|
atime7: 0
|
||||||
m_Mode: 0
|
m_Mode: 0
|
||||||
m_ColorSpace: -1
|
m_ColorSpace: 0
|
||||||
m_NumColorKeys: 2
|
m_NumColorKeys: 2
|
||||||
m_NumAlphaKeys: 2
|
m_NumAlphaKeys: 2
|
||||||
numCornerVertices: 0
|
numCornerVertices: 0
|
||||||
@ -16483,7 +16483,7 @@ LineRenderer:
|
|||||||
m_MaskInteraction: 0
|
m_MaskInteraction: 0
|
||||||
m_UseWorldSpace: 1
|
m_UseWorldSpace: 1
|
||||||
m_Loop: 0
|
m_Loop: 0
|
||||||
m_ApplyActiveColorSpace: 1
|
m_ApplyActiveColorSpace: 0
|
||||||
--- !u!1 &1916408931
|
--- !u!1 &1916408931
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -18220,13 +18220,13 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1595413212644777}
|
m_GameObject: {fileID: 1595413212644777}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: -0.16504757, y: 0, z: 0, w: 0.9862857}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 4529632010256581}
|
m_Father: {fileID: 4529632010256581}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: -19, y: 0, z: 0}
|
||||||
--- !u!4 &4529632010256581
|
--- !u!4 &4529632010256581
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -18235,8 +18235,8 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1644207063785795}
|
m_GameObject: {fileID: 1644207063785795}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: -0.08715578, y: 0, z: 0, w: 0.9961947}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 5.262, z: 3.23}
|
m_LocalPosition: {x: 0, y: 5.315, z: 3.352}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
@ -18244,7 +18244,7 @@ Transform:
|
|||||||
- {fileID: 1286537730}
|
- {fileID: 1286537730}
|
||||||
- {fileID: 1913692421}
|
- {fileID: 1913692421}
|
||||||
m_Father: {fileID: 975912082}
|
m_Father: {fileID: 975912082}
|
||||||
m_LocalEulerAnglesHint: {x: -10, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!114 &4529632010256582
|
--- !u!114 &4529632010256582
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -18257,34 +18257,48 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 3e8c36fe9172849798f9c4fd87b77ec7, type: 3}
|
m_Script: {fileID: 11500000, guid: 3e8c36fe9172849798f9c4fd87b77ec7, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
autoInit: 1
|
autoInit: 0
|
||||||
playerInput: {fileID: 975912080}
|
playerInput: {fileID: 975912080}
|
||||||
projectileObj: {fileID: 128572, guid: 8d387b0f65dfa4cdc965c4b56216e120, type: 3}
|
projectileObject: {fileID: 128572, guid: 8d387b0f65dfa4cdc965c4b56216e120, type: 3}
|
||||||
firePos: {fileID: 1286537730}
|
visualLook: {fileID: 4143712617986135}
|
||||||
directionIndicator: {fileID: 1199960033}
|
launchTransform: {fileID: 1286537730}
|
||||||
cannonProcessBar:
|
predictedLine: {fileID: 1913692422}
|
||||||
|
hitMarker: {fileID: 5951017876843886146, guid: 0eef5d11a5bdac248b2d16d733fd357c,
|
||||||
|
type: 3}
|
||||||
|
directionIndicator: {fileID: 0}
|
||||||
|
launchProcessBar:
|
||||||
<Obj>k__BackingField: {fileID: 0}
|
<Obj>k__BackingField: {fileID: 0}
|
||||||
<Fill>k__BackingField: {fileID: 0}
|
<Fill>k__BackingField: {fileID: 0}
|
||||||
<PreviousGaugeLine>k__BackingField: {fileID: 0}
|
<PreviousGaugeLine>k__BackingField: {fileID: 0}
|
||||||
<ReloadSlider>k__BackingField: {fileID: 0}
|
<ReloadSlider>k__BackingField: {fileID: 0}
|
||||||
<ShakeDuration>k__BackingField: 0
|
<ShakeDuration>k__BackingField: 0
|
||||||
<ShakePower>k__BackingField: 0
|
<ShakePower>k__BackingField: 0
|
||||||
cannonCooldown: 1
|
instantiateObjects: {fileID: 1700262530}
|
||||||
chargingSpeed: 1
|
gaugeChargingTime: 1
|
||||||
fireAngle: 0.2
|
launchCooldown: 1
|
||||||
launchSpeed: 75
|
distanceCoefficient: 40
|
||||||
launchAngle: 30
|
launchType: 0
|
||||||
|
launchSpeed: 30
|
||||||
|
launchAngle: 10
|
||||||
|
isUsingPredictLine: 1
|
||||||
|
lineMaxPoint: 100
|
||||||
|
lineInterval: 0.025
|
||||||
randomCatch: {x: 1, y: 4}
|
randomCatch: {x: 1, y: 4}
|
||||||
|
mouseRayDistance: 500
|
||||||
|
rayDistance: 10
|
||||||
|
hitLayer:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 2237976
|
||||||
waterLayer:
|
waterLayer:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 16
|
m_Bits: 16
|
||||||
targetLayer:
|
boidsLayer:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 32768
|
m_Bits: 32768
|
||||||
cameraShakePower: 2
|
cameraShakePower: 2
|
||||||
cameraShakeDuration: 0.3
|
cameraShakeDuration: 0.3
|
||||||
isFireMode: 0
|
isLaunchMode: 0
|
||||||
chargingCannon: 0
|
isCharging: 0
|
||||||
isReloading: 0
|
isReloading: 0
|
||||||
chargingGauge: 0
|
chargingGauge: 0
|
||||||
previousGauge: 0
|
previousGauge: 0
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 206 KiB |
Binary file not shown.
@ -11,41 +11,98 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
public class Cannon : MonoBehaviour
|
public class Cannon : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
/***********************************************************************
|
||||||
|
* Definitions
|
||||||
|
***********************************************************************/
|
||||||
|
#region Definitions
|
||||||
|
|
||||||
|
private enum LaunchType
|
||||||
|
{
|
||||||
|
NONE = -1,
|
||||||
|
FIXED_ANGLE,
|
||||||
|
FIXED_SPEED
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* Variables
|
* Variables
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
#region Variables
|
#region Variables
|
||||||
|
|
||||||
|
// 초기화 방식
|
||||||
[Title("초기화 방식")]
|
[Title("초기화 방식")]
|
||||||
[SerializeField] private bool autoInit = true;
|
[SerializeField] private bool autoInit = true;
|
||||||
|
|
||||||
|
// 컴포넌트
|
||||||
[Title("컴포넌트")]
|
[Title("컴포넌트")]
|
||||||
[SerializeField] private PlayerInput playerInput;
|
[SerializeField] private PlayerInput playerInput;
|
||||||
[SerializeField] private GameObject projectileObj;
|
[SerializeField] private GameObject projectileObject;
|
||||||
[SerializeField] private Transform firePos;
|
[SerializeField] private Transform visualLook;
|
||||||
|
[SerializeField] private Transform launchTransform;
|
||||||
|
[SerializeField] private LineRenderer predictedLine;
|
||||||
|
[SerializeField] private GameObject hitMarker;
|
||||||
[SerializeField] private GameObject directionIndicator;
|
[SerializeField] private GameObject directionIndicator;
|
||||||
[SerializeField] private ProcessBar cannonProcessBar;
|
[SerializeField] private ProcessBar launchProcessBar;
|
||||||
|
[SerializeField] private Transform instantiateObjects;
|
||||||
|
|
||||||
[Title("대포 변수")]
|
// 게이지 옵션
|
||||||
[SerializeField] private float cannonCooldown = 1f;
|
[Title("게이지 옵션")]
|
||||||
[SerializeField] private float chargingSpeed = 1f;
|
[Range(0.1f, 5f), Tooltip("게이지가 모두 차는데 걸리는 시간\n게이지는 0 ~ 1의 값을 가짐")]
|
||||||
[Range(0f, 0.5f)]
|
[SerializeField] private float gaugeChargingTime = 1f;
|
||||||
[SerializeField] private float fireAngle = 0.2f;
|
|
||||||
[SerializeField] private float launchSpeed = 75f;
|
// 발사 옵션
|
||||||
[SerializeField] private float launchAngle = 30f;
|
[Title("발사 옵션")]
|
||||||
|
[Range(0f, 3f), Tooltip("발사 재사용 시간")]
|
||||||
|
[SerializeField] private float launchCooldown = 1f;
|
||||||
|
|
||||||
|
[Range(1f, 100f), Tooltip("발사될 거리 계수\nchargingGauge * 변수값")]
|
||||||
|
[SerializeField] private float distanceCoefficient = 40f;
|
||||||
|
|
||||||
|
[Tooltip("발사 방식")]
|
||||||
|
[SerializeField] private LaunchType launchType = LaunchType.FIXED_ANGLE;
|
||||||
|
|
||||||
|
[ShowIf("@launchType == LaunchType.FIXED_SPEED")]
|
||||||
|
[Range(0f, 100f), Tooltip("발사 속도")]
|
||||||
|
[SerializeField] private float launchSpeed = 20f;
|
||||||
|
|
||||||
|
[ShowIf("@launchType == LaunchType.FIXED_ANGLE")]
|
||||||
|
[Range(0f, 60f), Tooltip("발사 각도")]
|
||||||
|
[SerializeField] private float launchAngle = 10f;
|
||||||
|
|
||||||
|
[Title("발사 예측 옵션")]
|
||||||
|
[SerializeField] private bool isUsingPredictLine;
|
||||||
|
|
||||||
|
[ShowIf("@isUsingPredictLine")]
|
||||||
|
[Range(1, 200), Tooltip("발사 예측선 갯수")]
|
||||||
|
[SerializeField] private int lineMaxPoint = 100;
|
||||||
|
|
||||||
|
[ShowIf("@isUsingPredictLine")]
|
||||||
|
[Range(0.001f, 1f), Tooltip("발사 예측선 간격")]
|
||||||
|
[SerializeField] private float lineInterval = 0.025f;
|
||||||
|
|
||||||
|
// 기타 옵션
|
||||||
|
[Title("기타 옵션")]
|
||||||
|
[Tooltip("랜덤으로 잡힐 물고기 마릿수")]
|
||||||
[SerializeField] private Vector2 randomCatch = new(1, 4);
|
[SerializeField] private Vector2 randomCatch = new(1, 4);
|
||||||
[SerializeField] private LayerMask waterLayer;
|
|
||||||
[SerializeField] private LayerMask targetLayer;
|
|
||||||
|
|
||||||
[Title("캐논 발사 카메라 효과")]
|
[SerializeField] private float mouseRayDistance = 500f;
|
||||||
|
[SerializeField] private float rayDistance = 10f;
|
||||||
|
[SerializeField] private LayerMask hitLayer;
|
||||||
|
[SerializeField] private LayerMask waterLayer;
|
||||||
|
[SerializeField] private LayerMask boidsLayer;
|
||||||
|
|
||||||
|
// 카메라 효과 옵션
|
||||||
|
[Title("카메라 효과 옵션")]
|
||||||
[SerializeField] private float cameraShakePower = 2f;
|
[SerializeField] private float cameraShakePower = 2f;
|
||||||
[SerializeField] private float cameraShakeDuration = 0.3f;
|
[SerializeField] private float cameraShakeDuration = 0.3f;
|
||||||
|
|
||||||
[Title("실시간 상태")]
|
// 실시간 데이터
|
||||||
|
[Title("실시간 데이터")]
|
||||||
[DisableIf("@true")]
|
[DisableIf("@true")]
|
||||||
[SerializeField] private bool isFireMode;
|
[SerializeField] private bool isLaunchMode;
|
||||||
[DisableIf("@true")]
|
[DisableIf("@true")]
|
||||||
[SerializeField] private bool chargingCannon;
|
[SerializeField] private bool isCharging;
|
||||||
[DisableIf("@true")]
|
[DisableIf("@true")]
|
||||||
[SerializeField] private bool isReloading;
|
[SerializeField] private bool isReloading;
|
||||||
[DisableIf("@true")]
|
[DisableIf("@true")]
|
||||||
@ -54,7 +111,11 @@ namespace BlueWaterProject
|
|||||||
[SerializeField] private float previousGauge;
|
[SerializeField] private float previousGauge;
|
||||||
|
|
||||||
private float cannonRadius;
|
private float cannonRadius;
|
||||||
private Collider[] hitColliders = new Collider[3];
|
private Vector3 launchVelocity;
|
||||||
|
private Collider[] hitColliders;
|
||||||
|
private GameObject newHitMarker;
|
||||||
|
|
||||||
|
private const int MAX_HIT_SIZE = 8;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -73,7 +134,11 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
cannonProcessBar = UiManager.Inst.OceanUi.ProcessBar;
|
cannonRadius = projectileObject.GetComponent<SphereCollider>()?.radius ??
|
||||||
|
projectileObject.GetComponent<ParticleWeapon>().colliderRadius;
|
||||||
|
|
||||||
|
launchProcessBar = UiManager.Inst.OceanUi.ProcessBar;
|
||||||
|
hitColliders = new Collider[MAX_HIT_SIZE];
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
@ -106,15 +171,24 @@ namespace BlueWaterProject
|
|||||||
private void Init()
|
private void Init()
|
||||||
{
|
{
|
||||||
playerInput = GetComponentInParent<PlayerInput>();
|
playerInput = GetComponentInParent<PlayerInput>();
|
||||||
projectileObj = Utils.LoadFromFolder<GameObject>("Assets/05.Prefabs/Particles/GrenadeFire", "GrenadeFireOBJ", ".prefab");
|
projectileObject = Utils.LoadFromFolder<GameObject>("Assets/05.Prefabs/Particles/GrenadeFire", "GrenadeFireOBJ", ".prefab");
|
||||||
firePos = transform.Find("FirePos");
|
visualLook = transform.Find("VisualLook");
|
||||||
directionIndicator = transform.parent.Find("DirectionIndicator").gameObject;
|
launchTransform = transform.Find("LaunchPosition");
|
||||||
directionIndicator.SetActive(false);
|
predictedLine = transform.Find("CannonLineRenderer").GetComponent<LineRenderer>();
|
||||||
|
if (predictedLine)
|
||||||
|
{
|
||||||
|
predictedLine.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
hitMarker = Utils.LoadFromFolder<GameObject>("Assets/05.Prefabs", "HitMarker", ".prefab");
|
||||||
|
directionIndicator = transform.parent.Find("DirectionIndicator")?.gameObject;
|
||||||
|
if (directionIndicator)
|
||||||
|
{
|
||||||
|
directionIndicator.SetActive(false);
|
||||||
|
}
|
||||||
|
instantiateObjects = GameObject.Find("InstantiateObjects").transform;
|
||||||
|
|
||||||
cannonRadius = projectileObj.GetComponent<SphereCollider>()?.radius ??
|
|
||||||
projectileObj.GetComponent<ParticleWeapon>().colliderRadius;
|
|
||||||
waterLayer = LayerMask.GetMask("Water");
|
waterLayer = LayerMask.GetMask("Water");
|
||||||
targetLayer = LayerMask.GetMask("Boids");
|
boidsLayer = LayerMask.GetMask("Boids");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -126,25 +200,28 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void ToggleCannon()
|
private void ToggleCannon()
|
||||||
{
|
{
|
||||||
isFireMode = !isFireMode;
|
isLaunchMode = !isLaunchMode;
|
||||||
directionIndicator.SetActive(isFireMode);
|
if (directionIndicator)
|
||||||
cannonProcessBar.SetActive(isFireMode);
|
|
||||||
|
|
||||||
if (!isFireMode)
|
|
||||||
{
|
{
|
||||||
chargingCannon = false;
|
directionIndicator.SetActive(isLaunchMode);
|
||||||
|
}
|
||||||
|
launchProcessBar.SetActive(isLaunchMode);
|
||||||
|
|
||||||
|
if (!isLaunchMode)
|
||||||
|
{
|
||||||
|
isCharging = false;
|
||||||
chargingGauge = 0f;
|
chargingGauge = 0f;
|
||||||
previousGauge = chargingGauge;
|
previousGauge = chargingGauge;
|
||||||
cannonProcessBar.SetFillAmount(0f);
|
launchProcessBar.SetFillAmount(0f);
|
||||||
cannonProcessBar.SetRotateZ(previousGauge * -360f);
|
launchProcessBar.SetRotateZ(previousGauge * -360f);
|
||||||
cannonProcessBar.SetRotateZ(0f);
|
launchProcessBar.SetRotateZ(0f);
|
||||||
cannonProcessBar.SetSliderValue(0f);
|
launchProcessBar.SetSliderValue(0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ChargeCannon()
|
private void ChargeCannon()
|
||||||
{
|
{
|
||||||
if (!isFireMode) return;
|
if (!isLaunchMode) return;
|
||||||
|
|
||||||
if (isReloading)
|
if (isReloading)
|
||||||
{
|
{
|
||||||
@ -152,25 +229,31 @@ namespace BlueWaterProject
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chargingCannon = true;
|
predictedLine.gameObject.SetActive(true);
|
||||||
|
if (hitMarker)
|
||||||
|
{
|
||||||
|
newHitMarker = Instantiate(hitMarker, Vector3.zero, hitMarker.transform.rotation, instantiateObjects);
|
||||||
|
newHitMarker.transform.localScale *= cannonRadius * 2f;
|
||||||
|
hitMarker.SetActive(true);
|
||||||
|
}
|
||||||
|
isCharging = true;
|
||||||
chargingGauge = 0f;
|
chargingGauge = 0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FireCannon()
|
private void FireCannon()
|
||||||
{
|
{
|
||||||
if (!isFireMode || !chargingCannon) return;
|
if (!isLaunchMode || !isCharging) return;
|
||||||
|
|
||||||
chargingCannon = false;
|
isCharging = false;
|
||||||
// previousGauge = 0f ~ 1f
|
predictedLine.gameObject.SetActive(false);
|
||||||
previousGauge = chargingGauge;
|
previousGauge = chargingGauge;
|
||||||
chargingGauge = 0f;
|
chargingGauge = 0f;
|
||||||
cannonProcessBar.SetFillAmount(0f);
|
launchProcessBar.SetFillAmount(0f);
|
||||||
cannonProcessBar.SetRotateZ(previousGauge * -360f);
|
launchProcessBar.SetRotateZ(previousGauge * -360f);
|
||||||
Fire(previousGauge * 100);
|
Launch();
|
||||||
isReloading = true;
|
|
||||||
|
|
||||||
StartCoroutine(CannonCoolDown(cannonCooldown));
|
StartCoroutine(LaunchCoolDown(launchCooldown));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -182,106 +265,210 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void HandleFireCannon()
|
private void HandleFireCannon()
|
||||||
{
|
{
|
||||||
if (!isFireMode) return;
|
if (!isLaunchMode) return;
|
||||||
|
|
||||||
var ray = CameraManager.Inst.MainCam.ScreenPointToRay(Input.mousePosition);
|
var ray = CameraManager.Inst.MainCam.ScreenPointToRay(Input.mousePosition);
|
||||||
|
|
||||||
if (Physics.Raycast(ray, out var hit, Mathf.Infinity, waterLayer))
|
if (Physics.Raycast(ray, out var hit, mouseRayDistance, waterLayer, QueryTriggerInteraction.Collide))
|
||||||
{
|
{
|
||||||
var directionToMouse = hit.point - directionIndicator.transform.position;
|
var directionToMouse = (hit.point - transform.position).normalized;
|
||||||
directionToMouse.y = 0f;
|
directionToMouse.y = 0f;
|
||||||
|
|
||||||
var lookRotation = Quaternion.LookRotation(directionToMouse);
|
var lookRotation = Quaternion.LookRotation(directionToMouse);
|
||||||
var indicatorRotationDirection = Quaternion.Euler(0f, lookRotation.eulerAngles.y, 0f);
|
if (directionIndicator)
|
||||||
|
{
|
||||||
|
var indicatorRotationDirection = Quaternion.Euler(0f, lookRotation.eulerAngles.y, 0f);
|
||||||
|
directionIndicator.transform.rotation = indicatorRotationDirection;
|
||||||
|
}
|
||||||
var cannonRotationDirection = Quaternion.Euler(transform.rotation.eulerAngles.x, lookRotation.eulerAngles.y, 0f);
|
var cannonRotationDirection = Quaternion.Euler(transform.rotation.eulerAngles.x, lookRotation.eulerAngles.y, 0f);
|
||||||
directionIndicator.transform.rotation = indicatorRotationDirection;
|
|
||||||
transform.rotation = cannonRotationDirection;
|
transform.rotation = cannonRotationDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!chargingCannon) return;
|
if (!isCharging) return;
|
||||||
|
|
||||||
if (chargingGauge < 1f)
|
if (chargingGauge < 1f)
|
||||||
{
|
{
|
||||||
chargingGauge += chargingSpeed * Time.deltaTime;
|
if (gaugeChargingTime == 0f)
|
||||||
|
{
|
||||||
|
gaugeChargingTime = 1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
chargingGauge += 1 / gaugeChargingTime * Time.deltaTime;
|
||||||
chargingGauge = Mathf.Clamp(chargingGauge, 0f, 1f);
|
chargingGauge = Mathf.Clamp(chargingGauge, 0f, 1f);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chargingGauge = 1f;
|
chargingGauge = 1f;
|
||||||
}
|
}
|
||||||
cannonProcessBar.SetFillAmount(chargingGauge);
|
launchProcessBar.SetFillAmount(chargingGauge);
|
||||||
|
|
||||||
// if (!isFireMode) return;
|
CalculateLaunchTrajectory();
|
||||||
//
|
|
||||||
// var ray = CameraManager.Inst.MainCam.ScreenPointToRay(Input.mousePosition);
|
|
||||||
//
|
|
||||||
// if (Physics.Raycast(ray, out var hit, Mathf.Infinity, waterLayer))
|
|
||||||
// {
|
|
||||||
// var directionToMouse = hit.point - directionIndicator.transform.position;
|
|
||||||
// directionToMouse.y = 0f;
|
|
||||||
//
|
|
||||||
// var lookRotation = Quaternion.LookRotation(directionToMouse);
|
|
||||||
// var indicatorRotationDirection = Quaternion.Euler(0f, lookRotation.eulerAngles.y, 0f);
|
|
||||||
// var cannonRotationDirection = Quaternion.Euler(cannon.transform.rotation.eulerAngles.x, lookRotation.eulerAngles.y, 0f);
|
|
||||||
// directionIndicator.transform.rotation = indicatorRotationDirection;
|
|
||||||
// cannon.transform.rotation = cannonRotationDirection;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!chargingCannon) return;
|
|
||||||
//
|
|
||||||
// if (chargingGauge < 1f)
|
|
||||||
// {
|
|
||||||
// chargingGauge += chargingSpeed * Time.deltaTime;
|
|
||||||
// chargingGauge = Mathf.Clamp(chargingGauge, 0f, 1f);
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// chargingGauge = 1f;
|
|
||||||
// }
|
|
||||||
// UiManager.Inst.OceanUi.ProcessBar.SetFillAmount(chargingGauge);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator CannonCoolDown(float waitTime)
|
private void CalculateLaunchTrajectory()
|
||||||
|
{
|
||||||
|
var startPosition = launchTransform.position;
|
||||||
|
var endPosition = CalculateEndPosition();
|
||||||
|
|
||||||
|
switch (launchType)
|
||||||
|
{
|
||||||
|
case LaunchType.NONE:
|
||||||
|
break;
|
||||||
|
case LaunchType.FIXED_ANGLE:
|
||||||
|
var currentEulerX = visualLook.eulerAngles.x - 360;
|
||||||
|
launchTransform.localRotation = Quaternion.Euler(currentEulerX + launchAngle, 0, 0);
|
||||||
|
|
||||||
|
var d = Vector3.Distance(new Vector3(endPosition.x, 0, endPosition.z), new Vector3(startPosition.x, 0, startPosition.z));
|
||||||
|
var h = endPosition.y - startPosition.y;
|
||||||
|
var theta = launchAngle * Mathf.Deg2Rad;
|
||||||
|
var g = Physics.gravity.magnitude;
|
||||||
|
var v0 = Mathf.Sqrt((g * d * d) / (2 * Mathf.Cos(theta) * Mathf.Cos(theta) * (d * Mathf.Tan(theta) - h)));
|
||||||
|
|
||||||
|
launchVelocity = CalculateVelocityFromAngleAndSpeed(startPosition, theta, v0);
|
||||||
|
break;
|
||||||
|
case LaunchType.FIXED_SPEED:
|
||||||
|
var launchPosition = launchTransform.position;
|
||||||
|
var x = Vector3.Distance(new Vector3(endPosition.x, 0, endPosition.z), new Vector3(launchPosition.x, 0, launchPosition.z));
|
||||||
|
var y = endPosition.y - launchPosition.y;
|
||||||
|
var angle = CalculateAngleForFixedSpeed(x, y, launchSpeed);
|
||||||
|
|
||||||
|
launchTransform.localRotation = Quaternion.Euler(-angle, 0, 0);
|
||||||
|
launchVelocity = launchTransform.forward * launchSpeed;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException();
|
||||||
|
}
|
||||||
|
|
||||||
|
PredictLine(startPosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
private float CalculateAngleForFixedSpeed(float x, float y, float speed)
|
||||||
|
{
|
||||||
|
var g = Physics.gravity.magnitude;
|
||||||
|
var speedSq = speed * speed;
|
||||||
|
var underRoot = speedSq * speedSq - g * (g * x * x + 2 * y * speedSq);
|
||||||
|
|
||||||
|
if (underRoot < 0)
|
||||||
|
{
|
||||||
|
Debug.LogError("Unreachable target with given speed.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var root = Mathf.Sqrt(underRoot);
|
||||||
|
var angle1 = Mathf.Atan((speedSq + root) / (g * x));
|
||||||
|
var angle2 = Mathf.Atan((speedSq - root) / (g * x));
|
||||||
|
|
||||||
|
var selectedAngle = Mathf.Min(angle1, angle2) * Mathf.Rad2Deg;
|
||||||
|
return selectedAngle;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector3 CalculateEndPosition()
|
||||||
|
{
|
||||||
|
var endPosition = launchTransform.position + transform.forward * (chargingGauge * distanceCoefficient);
|
||||||
|
Debug.DrawRay(endPosition, Vector3.down * rayDistance, Color.blue, 3f);
|
||||||
|
|
||||||
|
if (Physics.Raycast(endPosition, Vector3.down, out var hit, rayDistance, hitLayer, QueryTriggerInteraction.Collide))
|
||||||
|
{
|
||||||
|
Debug.DrawRay(hit.point, Vector3.down * rayDistance, Color.red, 3f);
|
||||||
|
return hit.point;
|
||||||
|
}
|
||||||
|
print("?");
|
||||||
|
return endPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector3 CalculateVelocityFromAngleAndSpeed(Vector3 startPosition, float angleRad, float speed)
|
||||||
|
{
|
||||||
|
var direction = launchTransform.forward;
|
||||||
|
direction.y = 0;
|
||||||
|
direction.Normalize();
|
||||||
|
var vx = speed * Mathf.Cos(angleRad);
|
||||||
|
var vy = speed * Mathf.Sin(angleRad);
|
||||||
|
|
||||||
|
var velocity = new Vector3(direction.x * vx, vy, direction.z * vx);
|
||||||
|
return velocity;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PredictLine(Vector3 startPosition)
|
||||||
|
{
|
||||||
|
if (!isUsingPredictLine) return;
|
||||||
|
|
||||||
|
UpdateLineRender(lineMaxPoint, (0, launchTransform.position));
|
||||||
|
|
||||||
|
var currentVelocity = launchVelocity;
|
||||||
|
var predictPosition = startPosition;
|
||||||
|
for (var i = 0; i < lineMaxPoint; i++)
|
||||||
|
{
|
||||||
|
currentVelocity = GetNextPredictedPosition(currentVelocity, 0f, lineInterval);
|
||||||
|
var nextPosition = predictPosition + currentVelocity * lineInterval;
|
||||||
|
|
||||||
|
predictPosition = nextPosition;
|
||||||
|
UpdateLineRender(lineMaxPoint, (i, predictPosition));
|
||||||
|
if (newHitMarker)
|
||||||
|
{
|
||||||
|
if (Physics.Raycast(predictPosition, Vector3.down, out var hit, rayDistance, hitLayer, QueryTriggerInteraction.Collide))
|
||||||
|
{
|
||||||
|
newHitMarker.transform.position = hit.point;
|
||||||
|
var hitRotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
|
||||||
|
newHitMarker.transform.rotation = Quaternion.Euler(90, 0, 0) * hitRotation;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector3 GetNextPredictedPosition(Vector3 currentVelocity, float drag, float increment)
|
||||||
|
{
|
||||||
|
currentVelocity += Physics.gravity * increment;
|
||||||
|
currentVelocity *= Mathf.Clamp01(1f - drag * increment);
|
||||||
|
return currentVelocity;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateLineRender(int count, (int point, Vector3 pos) pointPos)
|
||||||
|
{
|
||||||
|
predictedLine.positionCount = count;
|
||||||
|
predictedLine.SetPosition(pointPos.point, pointPos.pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator LaunchCoolDown(float waitTime)
|
||||||
{
|
{
|
||||||
var time = 0f;
|
var time = 0f;
|
||||||
cannonProcessBar.SetSliderValue(0f);
|
launchProcessBar.SetSliderValue(0f);
|
||||||
cannonProcessBar.SetActiveReloadSlider(true);
|
launchProcessBar.SetActiveReloadSlider(true);
|
||||||
|
|
||||||
while (time <= waitTime)
|
while (time <= waitTime)
|
||||||
{
|
{
|
||||||
time += Time.deltaTime;
|
time += Time.deltaTime;
|
||||||
var sliderValue = time > 0 ? time / waitTime : 0f;
|
var sliderValue = time > 0 ? time / waitTime : 0f;
|
||||||
cannonProcessBar.SetSliderValue(sliderValue);
|
launchProcessBar.SetSliderValue(sliderValue);
|
||||||
yield return null;
|
yield return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
isReloading = false;
|
isReloading = false;
|
||||||
cannonProcessBar.SetActiveReloadSlider(false);
|
launchProcessBar.SetActiveReloadSlider(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Fire(float chargingGauge)
|
private void Launch()
|
||||||
{
|
{
|
||||||
VisualFeedbackManager.Inst.CameraShake(CameraManager.Inst.OceanCamera.BaseShipCam, cameraShakePower, cameraShakeDuration);
|
VisualFeedbackManager.Inst.CameraShake(CameraManager.Inst.OceanCamera.BaseShipCam, cameraShakePower, cameraShakeDuration);
|
||||||
var addAngle = chargingGauge * fireAngle;
|
var projectile = Instantiate(projectileObject, launchTransform.position, Quaternion.identity);
|
||||||
var firePosRotation = firePos.rotation.eulerAngles;
|
|
||||||
firePosRotation.x -= addAngle;
|
|
||||||
var projectile = Instantiate(projectileObj, firePos.position, Quaternion.Euler(firePosRotation));
|
|
||||||
var particleWeapon = projectile.GetComponent<ParticleWeapon>();
|
var particleWeapon = projectile.GetComponent<ParticleWeapon>();
|
||||||
particleWeapon.onHitAction.AddListener(HandleCannonHit);
|
particleWeapon.SetHitMarker(newHitMarker);
|
||||||
projectile.GetComponent<Rigidbody>().velocity = projectile.transform.forward * launchSpeed;
|
particleWeapon.onHitAction.AddListener(HitAction);
|
||||||
|
particleWeapon.Rb.AddForce(launchVelocity, ForceMode.VelocityChange);
|
||||||
|
|
||||||
|
isReloading = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleCannonHit(RaycastHit hit, float power)
|
private void HitAction(RaycastHit hit, float power, GameObject marker = null)
|
||||||
{
|
{
|
||||||
if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Water"))
|
if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Water"))
|
||||||
{
|
{
|
||||||
var maxSize = Physics.OverlapSphereNonAlloc(hit.point, cannonRadius, hitColliders, targetLayer,
|
var maxSize = Physics.OverlapSphereNonAlloc(hit.point, cannonRadius, hitColliders, boidsLayer,
|
||||||
QueryTriggerInteraction.Collide);
|
QueryTriggerInteraction.Collide);
|
||||||
|
|
||||||
for (var i = 0; i < maxSize; i++)
|
for (var i = 0; i < maxSize; i++)
|
||||||
{
|
{
|
||||||
var hitBoids = hitColliders[i].GetComponentInParent<Boids>();
|
var hitBoids = hitColliders[i].GetComponentInParent<Boids>();
|
||||||
var catchSize = Random.Range((int)randomCatch.x, (int)randomCatch.y);
|
var catchSize = Random.Range((int)randomCatch.x, (int)randomCatch.y + 1);
|
||||||
hitBoids.CatchBoid(hitColliders[i], catchSize);
|
hitBoids.CatchBoid(hitColliders[i], catchSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -289,6 +476,11 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
hit.transform.GetComponent<IDamageable>()?.TakeDamage(power);
|
hit.transform.GetComponent<IDamageable>()?.TakeDamage(power);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (marker)
|
||||||
|
{
|
||||||
|
Destroy(marker);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -23,18 +23,19 @@ namespace BlueWaterProject
|
|||||||
[ShowIf("@useAutoDestroy")]
|
[ShowIf("@useAutoDestroy")]
|
||||||
[SerializeField] private float autoDestroyTime = 5f;
|
[SerializeField] private float autoDestroyTime = 5f;
|
||||||
|
|
||||||
public UnityEvent<RaycastHit, float> onHitAction;
|
public UnityEvent<RaycastHit, float, GameObject> onHitAction;
|
||||||
|
|
||||||
|
private GameObject marker;
|
||||||
private float power;
|
private float power;
|
||||||
private float detectionDistance;
|
private float detectionDistance;
|
||||||
|
|
||||||
private Rigidbody rb;
|
public Rigidbody Rb { get; private set; }
|
||||||
private SphereCollider sphereCollider;
|
private SphereCollider sphereCollider;
|
||||||
|
|
||||||
private void OnDrawGizmosSelected()
|
private void OnDrawGizmosSelected()
|
||||||
{
|
{
|
||||||
var radius = sphereCollider ? sphereCollider.radius : colliderRadius;
|
var radius = sphereCollider ? sphereCollider.radius : colliderRadius;
|
||||||
var direction = rb ? rb.velocity.normalized : transform.forward;
|
var direction = Rb ? Rb.velocity.normalized : transform.forward;
|
||||||
|
|
||||||
Gizmos.color = Color.red;
|
Gizmos.color = Color.red;
|
||||||
Gizmos.DrawWireSphere(transform.position, radius); // Draws the start sphere
|
Gizmos.DrawWireSphere(transform.position, radius); // Draws the start sphere
|
||||||
@ -43,7 +44,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
rb = GetComponent<Rigidbody>();
|
Rb = GetComponent<Rigidbody>();
|
||||||
sphereCollider = GetComponent<SphereCollider>();
|
sphereCollider = GetComponent<SphereCollider>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,9 +66,9 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
{
|
{
|
||||||
if (rb.velocity.magnitude != 0)
|
if (Rb.velocity.magnitude != 0)
|
||||||
{
|
{
|
||||||
transform.rotation = Quaternion.LookRotation(rb.velocity); // Sets rotation to look at direction of movement
|
transform.rotation = Quaternion.LookRotation(Rb.velocity); // Sets rotation to look at direction of movement
|
||||||
}
|
}
|
||||||
|
|
||||||
float radius; // Sets the radius of the collision detection
|
float radius; // Sets the radius of the collision detection
|
||||||
@ -76,12 +77,12 @@ namespace BlueWaterProject
|
|||||||
else
|
else
|
||||||
radius = colliderRadius;
|
radius = colliderRadius;
|
||||||
|
|
||||||
var direction = rb.velocity; // Gets the direction of the projectile, used for collision detection
|
var direction = Rb.velocity; // Gets the direction of the projectile, used for collision detection
|
||||||
if (rb.useGravity)
|
if (Rb.useGravity)
|
||||||
direction += Physics.gravity * Time.deltaTime; // Accounts for gravity if enabled
|
direction += Physics.gravity * Time.deltaTime; // Accounts for gravity if enabled
|
||||||
direction = direction.normalized;
|
direction = direction.normalized;
|
||||||
|
|
||||||
detectionDistance = rb.velocity.magnitude * Time.deltaTime; // Distance of collision detection for this frame
|
detectionDistance = Rb.velocity.magnitude * Time.deltaTime; // Distance of collision detection for this frame
|
||||||
|
|
||||||
if (Physics.SphereCast(transform.position, radius, direction, out var hit, detectionDistance, targetLayer)) // Checks if collision will happen
|
if (Physics.SphereCast(transform.position, radius, direction, out var hit, detectionDistance, targetLayer)) // Checks if collision will happen
|
||||||
{
|
{
|
||||||
@ -107,7 +108,7 @@ namespace BlueWaterProject
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
onHitAction.Invoke(hit, power);
|
onHitAction.Invoke(hit, power, marker);
|
||||||
}
|
}
|
||||||
|
|
||||||
Destroy(projectileParticle, 3f); // Removes particle effect after delay
|
Destroy(projectileParticle, 3f); // Removes particle effect after delay
|
||||||
@ -118,5 +119,6 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
|
|
||||||
public void SetPower(float value) => power = value;
|
public void SetPower(float value) => power = value;
|
||||||
|
public void SetHitMarker(GameObject value) => marker = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
143
BlueWater/Assets/03.Materials/LaunchHitMarker.mat
Normal file
143
BlueWater/Assets/03.Materials/LaunchHitMarker.mat
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &-4858898327941927310
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 11
|
||||||
|
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
version: 9
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 8
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LaunchHitMarker
|
||||||
|
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
|
||||||
|
m_Parent: {fileID: 0}
|
||||||
|
m_ModifiedSerializedProperties: 0
|
||||||
|
m_ValidKeywords:
|
||||||
|
- _SURFACE_TYPE_TRANSPARENT
|
||||||
|
m_InvalidKeywords: []
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 1
|
||||||
|
m_CustomRenderQueue: 3000
|
||||||
|
stringTagMap:
|
||||||
|
RenderType: Transparent
|
||||||
|
disabledShaderPasses:
|
||||||
|
- MOTIONVECTORS
|
||||||
|
- DepthOnly
|
||||||
|
- SHADOWCASTER
|
||||||
|
m_LockedProperties:
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BaseMap:
|
||||||
|
m_Texture: {fileID: 2800000, guid: d18c78739df93af4e8e741c9d1467a29, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _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: d18c78739df93af4e8e741c9d1467a29, type: 3}
|
||||||
|
m_Scale: {x: 1, 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}
|
||||||
|
- _SpecGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_Lightmaps:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_LightmapsInd:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- unity_ShadowMasks:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Ints: []
|
||||||
|
m_Floats:
|
||||||
|
- _AddPrecomputedVelocity: 0
|
||||||
|
- _AlphaClip: 0
|
||||||
|
- _AlphaToMask: 0
|
||||||
|
- _Blend: 0
|
||||||
|
- _BlendModePreserveSpecular: 0
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ClearCoatMask: 0
|
||||||
|
- _ClearCoatSmoothness: 0
|
||||||
|
- _Cull: 0
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailAlbedoMapScale: 1
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 10
|
||||||
|
- _DstBlendAlpha: 10
|
||||||
|
- _EnvironmentReflections: 1
|
||||||
|
- _GlossMapScale: 0
|
||||||
|
- _Glossiness: 0
|
||||||
|
- _GlossinessSource: 0
|
||||||
|
- _GlossyReflections: 0
|
||||||
|
- _Metallic: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.005
|
||||||
|
- _QueueOffset: 0
|
||||||
|
- _ReceiveShadows: 1
|
||||||
|
- _Shininess: 0
|
||||||
|
- _Smoothness: 0.5
|
||||||
|
- _SmoothnessSource: 0
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecSource: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 5
|
||||||
|
- _SrcBlendAlpha: 1
|
||||||
|
- _Surface: 1
|
||||||
|
- _WorkflowMode: 1
|
||||||
|
- _ZWrite: 0
|
||||||
|
m_Colors:
|
||||||
|
- _BaseColor: {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
- _Color: {r: 1, g: 0, b: 0, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||||
|
m_BuildTextureStacks: []
|
||||||
|
m_AllowLocking: 1
|
8
BlueWater/Assets/03.Materials/LaunchHitMarker.mat.meta
Normal file
8
BlueWater/Assets/03.Materials/LaunchHitMarker.mat.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2ec0306384204dd40a1dc4b93f4e7317
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -158,6 +158,7 @@ MonoBehaviour:
|
|||||||
showBounds: 1
|
showBounds: 1
|
||||||
fishSpot: {fileID: 6023135201199208214}
|
fishSpot: {fileID: 6023135201199208214}
|
||||||
showWaterEffect: 1
|
showWaterEffect: 1
|
||||||
|
isUsingDynamicHeight: 0
|
||||||
fishSpotOffset: {x: 0, y: 0, z: 0}
|
fishSpotOffset: {x: 0, y: 0, z: 0}
|
||||||
contentUiPrefab: {fileID: 3090447943159425444, guid: ff7dbfdf9bd0ee5499f523f8fafa45f7,
|
contentUiPrefab: {fileID: 3090447943159425444, guid: ff7dbfdf9bd0ee5499f523f8fafa45f7,
|
||||||
type: 3}
|
type: 3}
|
||||||
@ -236,6 +237,11 @@ PrefabInstance:
|
|||||||
propertyPath: m_ConstrainProportionsScale
|
propertyPath: m_ConstrainProportionsScale
|
||||||
value: 1
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3990893376361859224, guid: 0051ffdc4c5db0d439d5d2c880040228,
|
||||||
|
type: 3}
|
||||||
|
propertyPath: m_IsTrigger
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4617604176008979014, guid: 0051ffdc4c5db0d439d5d2c880040228,
|
- target: {fileID: 4617604176008979014, guid: 0051ffdc4c5db0d439d5d2c880040228,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_ConstrainProportionsScale
|
propertyPath: m_ConstrainProportionsScale
|
||||||
|
87
BlueWater/Assets/05.Prefabs/HitMarker.prefab
Normal file
87
BlueWater/Assets/05.Prefabs/HitMarker.prefab
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &5951017876843886146
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8173673222374022247}
|
||||||
|
- component: {fileID: 132518609203318759}
|
||||||
|
- component: {fileID: 1700303181779377356}
|
||||||
|
m_Layer: 7
|
||||||
|
m_Name: HitMarker
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &8173673222374022247
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5951017876843886146}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 1
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
|
||||||
|
--- !u!33 &132518609203318759
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5951017876843886146}
|
||||||
|
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
--- !u!23 &1700303181779377356
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5951017876843886146}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||||
|
m_RayTracingAccelStructBuildFlags: 1
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: 2ec0306384204dd40a1dc4b93f4e7317, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 3
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_AdditionalVertexStreams: {fileID: 0}
|
7
BlueWater/Assets/05.Prefabs/HitMarker.prefab.meta
Normal file
7
BlueWater/Assets/05.Prefabs/HitMarker.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0eef5d11a5bdac248b2d16d733fd357c
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -28,7 +28,7 @@ Transform:
|
|||||||
m_GameObject: {fileID: 128572}
|
m_GameObject: {fileID: 128572}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 8.313633, y: 5.892903, z: -13.319157}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 1
|
m_ConstrainProportionsScale: 1
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@ -53,7 +53,7 @@ SphereCollider:
|
|||||||
m_ProvidesContacts: 0
|
m_ProvidesContacts: 0
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_Radius: 0.15
|
m_Radius: 1
|
||||||
m_Center: {x: 0, y: 0, z: 0}
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
--- !u!54 &5479992
|
--- !u!54 &5479992
|
||||||
Rigidbody:
|
Rigidbody:
|
||||||
@ -99,7 +99,7 @@ MonoBehaviour:
|
|||||||
type: 3}
|
type: 3}
|
||||||
muzzleParticle: {fileID: 1509306094841910, guid: 7026fe0f1c7efa648b9b3c4662359062,
|
muzzleParticle: {fileID: 1509306094841910, guid: 7026fe0f1c7efa648b9b3c4662359062,
|
||||||
type: 3}
|
type: 3}
|
||||||
colliderRadius: 0.15
|
colliderRadius: 1
|
||||||
collideOffset: 0.1
|
collideOffset: 0.1
|
||||||
targetLayer:
|
targetLayer:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
|
@ -9895,7 +9895,7 @@ ParticleSystem:
|
|||||||
startSize:
|
startSize:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
minMaxState: 0
|
minMaxState: 0
|
||||||
scalar: 0.32
|
scalar: 0.4
|
||||||
minScalar: 1
|
minScalar: 1
|
||||||
maxCurve:
|
maxCurve:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
|
@ -74,7 +74,7 @@ Material:
|
|||||||
- _DistortionBlend: 0.5
|
- _DistortionBlend: 0.5
|
||||||
- _DistortionEnabled: 0
|
- _DistortionEnabled: 0
|
||||||
- _DistortionStrength: 1
|
- _DistortionStrength: 1
|
||||||
- _DistortionStrengthScaled: 0
|
- _DistortionStrengthScaled: 0.1
|
||||||
- _DstBlend: 10
|
- _DstBlend: 10
|
||||||
- _DstBlendAlpha: 10
|
- _DstBlendAlpha: 10
|
||||||
- _EmissionEnabled: 0
|
- _EmissionEnabled: 0
|
||||||
|
Loading…
Reference in New Issue
Block a user