#17 낙석에 Indicator 기능 추가
This commit is contained in:
parent
4db6c2bf57
commit
54bc27f11d
@ -4,6 +4,8 @@ using BlueWater.Interfaces;
|
||||
using BlueWater.Maps;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace BlueWater
|
||||
{
|
||||
@ -16,6 +18,13 @@ namespace BlueWater
|
||||
[SerializeField, Required]
|
||||
private SphereCollider _sphereCollider;
|
||||
|
||||
[SerializeField]
|
||||
private DecalProjector _indicator;
|
||||
|
||||
[Title("표시기 설정")]
|
||||
[SerializeField]
|
||||
private bool _isUsingIndicator = true;
|
||||
|
||||
[Title("충돌 설정")]
|
||||
[SerializeField]
|
||||
private LayerMask _targetLayer;
|
||||
@ -39,16 +48,38 @@ namespace BlueWater
|
||||
private Collider[] _hitColliders = new Collider[4];
|
||||
private bool _isGrounded;
|
||||
private bool _isAttacked;
|
||||
|
||||
// Hashes
|
||||
private static readonly int _fillHash = Shader.PropertyToID("_Fill");
|
||||
|
||||
private IEnumerator Start()
|
||||
{
|
||||
_sphereCollider.enabled = false;
|
||||
SpawnLocation = MapManager.Instance.SandMoleMapController.ParticleInstantiateLocation;
|
||||
BasicSetting();
|
||||
ShowIndicator();
|
||||
|
||||
var startDistance = float.PositiveInfinity;
|
||||
while (!_isGrounded)
|
||||
{
|
||||
_isGrounded = Physics.Raycast(transform.position, Vector3.down, _checkDistance, _groundLayer);
|
||||
if (!Physics.Raycast(transform.position, Vector3.down, out var hit, 10f, _groundLayer)) continue;
|
||||
|
||||
if (float.IsPositiveInfinity(startDistance))
|
||||
{
|
||||
startDistance = hit.distance;
|
||||
}
|
||||
|
||||
if (_isUsingIndicator && _indicator)
|
||||
{
|
||||
var fillValue = Mathf.Lerp(1f, 0f, hit.distance / startDistance);
|
||||
_indicator.material.SetFloat(_fillHash, fillValue);
|
||||
}
|
||||
_isGrounded = hit.distance <= _checkDistance;
|
||||
yield return null;
|
||||
}
|
||||
|
||||
_indicator.material.SetFloat(_fillHash, 1f);
|
||||
HideIndicator();
|
||||
|
||||
if (_rigidbody)
|
||||
{
|
||||
@ -77,5 +108,30 @@ namespace BlueWater
|
||||
iDamageable.TakeDamage(_attackDamage);
|
||||
}
|
||||
}
|
||||
|
||||
private void BasicSetting()
|
||||
{
|
||||
if (!_isUsingIndicator || !_indicator) return;
|
||||
|
||||
_indicator.scaleMode = DecalScaleMode.InheritFromHierarchy;
|
||||
_indicator.material = new Material(_indicator.material);
|
||||
_indicator.material.SetFloat(_fillHash, 0f);
|
||||
}
|
||||
|
||||
private void HideIndicator()
|
||||
{
|
||||
if (!_isUsingIndicator || !_indicator) return;
|
||||
|
||||
_indicator.enabled = false;
|
||||
_indicator.material.SetFloat(_fillHash, 0);
|
||||
}
|
||||
|
||||
private void ShowIndicator()
|
||||
{
|
||||
if (!_isUsingIndicator || !_indicator) return;
|
||||
|
||||
_indicator.material.SetFloat(_fillHash, 0);
|
||||
_indicator.enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
@ -137,7 +137,7 @@ SpriteRenderer:
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: d3c87e7ec1e83654cb2bff3178900c99, type: 2}
|
||||
- {fileID: 2100000, guid: cc9b0fce917bc9548bd1bf66aa23a269, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
|
@ -1,5 +1,61 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &8995215974275723360
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1426941151981288099}
|
||||
- component: {fileID: 6370181286260610806}
|
||||
m_Layer: 8
|
||||
m_Name: Indicator
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1426941151981288099
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8995215974275723360}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 5, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 10}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6877682250950493550}
|
||||
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
|
||||
--- !u!114 &6370181286260610806
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8995215974275723360}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0777d029ed3dffa4692f417d4aba19ca, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 2100000, guid: 0b52d77e4d2f39e4096329a5a410c6a3, type: 2}
|
||||
m_DrawDistance: 1000
|
||||
m_FadeScale: 0.9
|
||||
m_StartAngleFade: 180
|
||||
m_EndAngleFade: 180
|
||||
m_UVScale: {x: 1, y: 1}
|
||||
m_UVBias: {x: 0, y: 0}
|
||||
m_DecalLayerMask: 1
|
||||
m_ScaleMode: 1
|
||||
m_Offset: {x: 0, y: 0, z: 0.5}
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_FadeFactor: 1
|
||||
--- !u!1001 &3577643095578124186
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -78,7 +134,10 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: 7986070582027999988, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 1426941151981288099}
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 3764902268943045601, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
|
||||
insertIndex: -1
|
||||
@ -107,6 +166,8 @@ MonoBehaviour:
|
||||
_dieParticle: {fileID: 19826678, guid: 660dfd0ccf26cbf489a7556236949683, type: 3}
|
||||
_rigidbody: {fileID: 1838738275417183443}
|
||||
_sphereCollider: {fileID: 2971964863692897937}
|
||||
_indicator: {fileID: 6370181286260610806}
|
||||
_isUsingIndicator: 1
|
||||
_targetLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 2048
|
||||
@ -127,3 +188,8 @@ SphereCollider:
|
||||
m_CorrespondingSourceObject: {fileID: 1772409705626034443, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
|
||||
m_PrefabInstance: {fileID: 3577643095578124186}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &6877682250950493550 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 7986070582027999988, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
|
||||
m_PrefabInstance: {fileID: 3577643095578124186}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
|
Loading…
Reference in New Issue
Block a user