在 Unity 中使用 DOTween 实现 A Dark Room 中的战斗效果

在 Unity 中使用 DOTween 实现 A Dark Room 中的战斗效果_第1张图片

思路:

  1. 使用DOTween的DOPunchAnchorPos方法移动UI;
  2. 使用DOTween的DOFade方法实现被攻击掉落生命值时的淡入淡出效果。
在 Unity 中使用 DOTween 实现 A Dark Room 中的战斗效果_第2张图片
Unity实现的战斗效果.gif

实现代码:

BattleController.cs
///  攻击 
    void Attack(RectTransform attacker, Vector2 directionAndstrength, Text suffererLossHPText, Text sufferCurrentHPText, int lossHP, ref int suffererCurrentHP)
    {
        if (!m_isBattleOver)
        {
            // 攻击动画
            attacker.DOPunchAnchorPos(directionAndstrength, 0.2f, 0, 0f, false);
            // 受攻击一方生命值减小,减小值为攻击方的攻击力
            suffererCurrentHP -= lossHP;

            m_battleView.SetCurrentHP(sufferCurrentHPText, suffererCurrentHP);
            // Debug.Log("currentHP:" + suffererCurrentHP);
            // 受攻击一方显示生命值减小的值
            suffererLossHPText.text = "-" + lossHP.ToString();
            // 调用减小生命值动画效果
            m_battleView.LossHPAnimation(suffererLossHPText);
        }

    }

RectTransform (Unity UI 4.6)

DOPunchAnchorPos(Vector2 punch, float duration, int vibrato, float elasticity, boolsnapping)

Punches the target's anchoredPosition with the given values.
punch: punch The direction and strength of the punch (added to the RectTransform's current position).
duration: The duration of the tween.
vibrato: Indicates how much will the punch vibrate.
elasticity: Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards. 1 creates a full oscillation between the punch direction and the opposite direction, while 0 oscillates only between the punch and the start position.
**snapping: ** If TRUE the tween will smoothly snap all values to integers.

BattleView.cs
///  被攻击时掉落生命值动画效果 
    public void LossHPAnimation(Text lossHPText)
    {
        // FadeIn
        lossHPText.DOFade(1f, 0f);
        // FadeOut
        lossHPText.DOFade(0f, 1.5f);
    }

Text (Unity UI 4.6)

DOFade(float to, float duration)

Fades the target's alpha to the given value.

Unity5.4, C#
Github

你可能感兴趣的:(在 Unity 中使用 DOTween 实现 A Dark Room 中的战斗效果)