|
@@ -50,9 +50,11 @@ public class BlackUmbrella : MonoBehaviour
|
|
|
public float appearTime;
|
|
public float appearTime;
|
|
|
[LabelText("黑伞停留时长")]
|
|
[LabelText("黑伞停留时长")]
|
|
|
public float stayTime;
|
|
public float stayTime;
|
|
|
- [LabelText("黑伞收回时长")]
|
|
|
|
|
- public float backTime;
|
|
|
|
|
- private bool hasBackAni;
|
|
|
|
|
|
|
+ [LabelText("黑伞冲刺前提示时长")]
|
|
|
|
|
+ public float attentionyTime;
|
|
|
|
|
+ //[LabelText("黑伞收回时长")]
|
|
|
|
|
+ //public float backTime;
|
|
|
|
|
+ //private bool hasBackAni;
|
|
|
[LabelText("黑伞消失时长")]
|
|
[LabelText("黑伞消失时长")]
|
|
|
public float disappearTime;
|
|
public float disappearTime;
|
|
|
[LabelText("黑伞位置提示特效")]
|
|
[LabelText("黑伞位置提示特效")]
|
|
@@ -119,6 +121,8 @@ public class BlackUmbrella : MonoBehaviour
|
|
|
{
|
|
{
|
|
|
fx = -1;
|
|
fx = -1;
|
|
|
}
|
|
}
|
|
|
|
|
+ string dir = fx > 0 ? "右边" : "左边";
|
|
|
|
|
+ Debug.Log("攻击方向为" + dir);
|
|
|
aimPos.x += farFromPlayerDis * fx;
|
|
aimPos.x += farFromPlayerDis * fx;
|
|
|
attackDis = Mathf.Abs(aimPos.x - transform.position.x);
|
|
attackDis = Mathf.Abs(aimPos.x - transform.position.x);
|
|
|
}
|
|
}
|
|
@@ -133,6 +137,11 @@ public class BlackUmbrella : MonoBehaviour
|
|
|
break;
|
|
break;
|
|
|
case UmbrellaState.stay:
|
|
case UmbrellaState.stay:
|
|
|
aimPos.y = pc.bodyTrans.position.y;
|
|
aimPos.y = pc.bodyTrans.position.y;
|
|
|
|
|
+ allTime--;
|
|
|
|
|
+ if (allTime < 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ ChangeUmbrellaState(UmbrellaState.back);
|
|
|
|
|
+ }
|
|
|
break;
|
|
break;
|
|
|
case UmbrellaState.back:
|
|
case UmbrellaState.back:
|
|
|
OnBack?.Invoke();
|
|
OnBack?.Invoke();
|
|
@@ -167,21 +176,19 @@ public class BlackUmbrella : MonoBehaviour
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case UmbrellaState.stay:
|
|
case UmbrellaState.stay:
|
|
|
- aimPos.y = pc.bodyTrans.position.y;
|
|
|
|
|
- transform.position = Vector3.MoveTowards(transform.position, aimPos, 9f * Time.deltaTime);
|
|
|
|
|
- if (umbrePastTime >= stayTime)
|
|
|
|
|
|
|
+ if (umbrePastTime > stayTime + attentionyTime)
|
|
|
{
|
|
{
|
|
|
- transform.position = aimPos;
|
|
|
|
|
umbrePastTime = 0;
|
|
umbrePastTime = 0;
|
|
|
- allTime--;
|
|
|
|
|
- if (allTime > 0)
|
|
|
|
|
- {
|
|
|
|
|
- ChangeUmbrellaState(UmbrellaState.sprint);
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- ChangeUmbrellaState(UmbrellaState.back);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ChangeUmbrellaState(UmbrellaState.sprint);
|
|
|
|
|
+ }
|
|
|
|
|
+ else if(umbrePastTime > stayTime)
|
|
|
|
|
+ {
|
|
|
|
|
+ transform.position = aimPos;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ aimPos.y = pc.bodyTrans.position.y;
|
|
|
|
|
+ transform.position = Vector3.MoveTowards(transform.position, aimPos, 9f * Time.deltaTime);
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
case UmbrellaState.back:
|
|
case UmbrellaState.back:
|
|
@@ -254,17 +261,21 @@ public class BlackUmbrella : MonoBehaviour
|
|
|
effectInsSr.color = color;
|
|
effectInsSr.color = color;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //bool isAboutToAttack = umbrellaState == UmbrellaState.stay
|
|
|
|
|
+ // && allTime > 0
|
|
|
|
|
+ // && (stayTime - umbrePastTime) <= 1f;
|
|
|
|
|
+
|
|
|
bool isAboutToAttack = umbrellaState == UmbrellaState.stay
|
|
bool isAboutToAttack = umbrellaState == UmbrellaState.stay
|
|
|
- && allTime > 0
|
|
|
|
|
- && (stayTime - umbrePastTime) <= 1f;
|
|
|
|
|
|
|
+ && allTime > -1
|
|
|
|
|
+ && (umbrePastTime - stayTime)> 0;
|
|
|
|
|
|
|
|
- if (!IsTargetVisible(gameObject))
|
|
|
|
|
|
|
+ if (!IsTargetVisible(gameObject) && umbrellaState == UmbrellaState.stay)
|
|
|
{
|
|
{
|
|
|
if (isAboutToAttack)
|
|
if (isAboutToAttack)
|
|
|
{
|
|
{
|
|
|
// 剩余时间在0-1秒之间,计算透明度(0.5 -> 1.0)
|
|
// 剩余时间在0-1秒之间,计算透明度(0.5 -> 1.0)
|
|
|
- float remainingTime = stayTime - umbrePastTime;
|
|
|
|
|
- float alpha = Mathf.Lerp(1.0f, initialTransparency, remainingTime); // 时间越少透明度越高
|
|
|
|
|
|
|
+ float remainingTime = umbrePastTime - stayTime;
|
|
|
|
|
+ float alpha = Mathf.Lerp(initialTransparency, 1f , remainingTime * 1/ attentionyTime); // 时间越少透明度越高
|
|
|
var color = effectInsSr.color;
|
|
var color = effectInsSr.color;
|
|
|
color.a = alpha;
|
|
color.a = alpha;
|
|
|
effectInsSr.color = color;
|
|
effectInsSr.color = color;
|