引入属性、伤害管线
This commit is contained in:
@@ -12,6 +12,8 @@ namespace SepCore.DamageText
|
||||
private const float FadeDelay = 0.2f;
|
||||
private const float FadeDuration = 0.35f;
|
||||
private static readonly Color NormalColor = new Color(1f, 0.32f, 0.23f, 1f);
|
||||
private static readonly Color CritColor = new Color(1f, 0.85f, 0.15f, 1f);
|
||||
private static readonly Color DodgeColor = new Color(0.75f, 0.75f, 0.75f, 1f);
|
||||
|
||||
[SerializeField] private RectTransform _cachedTransform = null;
|
||||
|
||||
@@ -22,7 +24,7 @@ namespace SepCore.DamageText
|
||||
private Sequence _sequence;
|
||||
private Action<DamageTextItem> _onComplete;
|
||||
|
||||
public void Show(Vector3 worldPosition, int damage, Canvas canvas, Action<DamageTextItem> onComplete)
|
||||
public void Show(Vector3 worldPosition, int damage, bool isCrit, bool isDodge, Canvas canvas, Action<DamageTextItem> onComplete)
|
||||
{
|
||||
_onComplete = onComplete;
|
||||
gameObject.SetActive(true);
|
||||
@@ -30,8 +32,27 @@ namespace SepCore.DamageText
|
||||
|
||||
_canvasGroup.alpha = 1f;
|
||||
_cachedTransform.localScale = Vector3.one;
|
||||
_text.color = NormalColor;
|
||||
_text.text = damage.ToString();
|
||||
|
||||
Vector3 punchScale;
|
||||
if (isDodge)
|
||||
{
|
||||
_text.color = DodgeColor;
|
||||
_text.text = "MISS";
|
||||
punchScale = new Vector3(0.1f, 0.1f, 0f);
|
||||
}
|
||||
else if (isCrit)
|
||||
{
|
||||
_text.color = CritColor;
|
||||
_text.text = damage.ToString() + "!";
|
||||
_cachedTransform.localScale = new Vector3(1.3f, 1.3f, 1f);
|
||||
punchScale = new Vector3(0.35f, 0.35f, 0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
_text.color = NormalColor;
|
||||
_text.text = damage.ToString();
|
||||
punchScale = new Vector3(0.15f, 0.15f, 0f);
|
||||
}
|
||||
|
||||
Vector3 screenPos = GameEntry.Scene.MainCamera.WorldToScreenPoint(worldPosition);
|
||||
RectTransformUtility.ScreenPointToLocalPointInRectangle((RectTransform)canvas.transform, screenPos,
|
||||
@@ -42,11 +63,16 @@ namespace SepCore.DamageText
|
||||
_sequence = DOTween.Sequence();
|
||||
_sequence.Append(_cachedTransform.DOAnchorPosY(localPos.y + RiseDistance, RiseDuration)
|
||||
.SetEase(Ease.OutQuad));
|
||||
_sequence.Join(_cachedTransform.DOPunchScale(new Vector3(0.15f, 0.15f, 0f), 0.18f, 6, 0.75f));
|
||||
_sequence.Join(_cachedTransform.DOPunchScale(punchScale, 0.18f, 6, 0.75f));
|
||||
_sequence.Join(_canvasGroup.DOFade(0f, FadeDuration).SetDelay(FadeDelay));
|
||||
_sequence.OnComplete(() => _onComplete(this));
|
||||
}
|
||||
|
||||
public void Show(Vector3 worldPosition, int damage, Canvas canvas, Action<DamageTextItem> onComplete)
|
||||
{
|
||||
Show(worldPosition, damage, false, false, canvas, onComplete);
|
||||
}
|
||||
|
||||
public void ResetItem()
|
||||
{
|
||||
KillSequence();
|
||||
|
||||
Reference in New Issue
Block a user