|
@@ -13,8 +13,11 @@ public class TornadoFan : AttackTrigger
|
|
|
[LabelText("落地伤害倍率")] public float landingDamageRate;
|
|
[LabelText("落地伤害倍率")] public float landingDamageRate;
|
|
|
[LabelText("结束击飞力的斜率")] public float forceRate;
|
|
[LabelText("结束击飞力的斜率")] public float forceRate;
|
|
|
[LabelText("结束击飞力最大值")] public float forceMax;
|
|
[LabelText("结束击飞力最大值")] public float forceMax;
|
|
|
|
|
+ [LabelText("结束击飞力最小值")] public float forceMin;
|
|
|
[LabelText("落地后眩晕时间")] public float weakTime;
|
|
[LabelText("落地后眩晕时间")] public float weakTime;
|
|
|
- public float lerpValue;
|
|
|
|
|
|
|
+ [LabelText("最大速度")]public float lerpValueMax;
|
|
|
|
|
+ [LabelText("最小速度")]public float lerpValueMin;
|
|
|
|
|
+ [LabelText("速度斜率")]public float lerpRate;
|
|
|
[DisplayOnly] public int damage;
|
|
[DisplayOnly] public int damage;
|
|
|
[DisplayOnly] public float totalTime;
|
|
[DisplayOnly] public float totalTime;
|
|
|
[DisplayOnly] public float time; //经过的时间
|
|
[DisplayOnly] public float time; //经过的时间
|
|
@@ -48,13 +51,24 @@ public class TornadoFan : AttackTrigger
|
|
|
blowUp.dir = new Vector3(-1, 0.5f, 0);
|
|
blowUp.dir = new Vector3(-1, 0.5f, 0);
|
|
|
blowUp.force = forceRate * dir + forceMax;
|
|
blowUp.force = forceRate * dir + forceMax;
|
|
|
}
|
|
}
|
|
|
- blowUp.time = weakTime;
|
|
|
|
|
- blowUp.haveLandingDamage = true;
|
|
|
|
|
- blowUp.landingDamageRate = landingDamageRate;
|
|
|
|
|
- attackMethod.attackInfo.blowUp = blowUp;
|
|
|
|
|
- moveCharacter.attributeStatus.AddBlowUp(attackMethod, owner.bodyTrans);
|
|
|
|
|
- moveCharacter.bodyCollider.layer = LayerMask.NameToLayer("BodyToPlatformCollider");
|
|
|
|
|
- moveCharacter.attributeStatus.landingDamageFrom = owner;
|
|
|
|
|
|
|
+ if(blowUp.force >= 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ blowUp.time = weakTime;
|
|
|
|
|
+ blowUp.haveLandingDamage = true;
|
|
|
|
|
+ blowUp.landingDamageRate = landingDamageRate;
|
|
|
|
|
+ attackMethod.attackInfo.blowUp = blowUp;
|
|
|
|
|
+ moveCharacter.attributeStatus.AddBlowUp(attackMethod, owner.bodyTrans);
|
|
|
|
|
+ moveCharacter.bodyCollider.layer = LayerMask.NameToLayer("BodyToPlatformCollider");
|
|
|
|
|
+ moveCharacter.attributeStatus.landingDamageFrom = owner;
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ moveCharacter.ChangeState(CharacterState.Idle);
|
|
|
|
|
+ bool canfly = moveCharacter.canFly;
|
|
|
|
|
+ moveCharacter.rb.useGravity = !canfly;
|
|
|
|
|
+ moveCharacter.nowCanFly = canfly;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
gameObject.SetActive(false);
|
|
gameObject.SetActive(false);
|
|
@@ -97,10 +111,16 @@ public class TornadoFan : AttackTrigger
|
|
|
Vector3 nowPos = moveCharacter.transform.position;
|
|
Vector3 nowPos = moveCharacter.transform.position;
|
|
|
Vector3 targetPos = nowPos;
|
|
Vector3 targetPos = nowPos;
|
|
|
targetPos.x = transform.position.x;
|
|
targetPos.x = transform.position.x;
|
|
|
- if (Vector3.Distance(nowPos, targetPoss[i]) < distance)
|
|
|
|
|
|
|
+ float targetDistance = Vector3.Distance(nowPos, targetPoss[i]);
|
|
|
|
|
+ if (targetDistance < distance)
|
|
|
{
|
|
{
|
|
|
targetPoss[i] = CalculateTargetPos(nowPos);
|
|
targetPoss[i] = CalculateTargetPos(nowPos);
|
|
|
}
|
|
}
|
|
|
|
|
+ float lerpValue = lerpValueMax - (targetDistance * lerpRate);
|
|
|
|
|
+ if(lerpValue < lerpValueMin)
|
|
|
|
|
+ {
|
|
|
|
|
+ lerpValue = lerpValueMin;
|
|
|
|
|
+ }
|
|
|
moveCharacter.transform.position = Vector3.Lerp(nowPos, targetPoss[i], lerpValue * Time.deltaTime);
|
|
moveCharacter.transform.position = Vector3.Lerp(nowPos, targetPoss[i], lerpValue * Time.deltaTime);
|
|
|
//moveCharacter.transform.position = Vector3.Lerp(nowPos, targetPos, lerpValue * Time.deltaTime);
|
|
//moveCharacter.transform.position = Vector3.Lerp(nowPos, targetPos, lerpValue * Time.deltaTime);
|
|
|
}
|
|
}
|
|
@@ -123,6 +143,8 @@ public class TornadoFan : AttackTrigger
|
|
|
attackMethod.attackInfo.damage = damage;
|
|
attackMethod.attackInfo.damage = damage;
|
|
|
transform.position = targetPos;
|
|
transform.position = targetPos;
|
|
|
targetPoss = new List<Vector3>();
|
|
targetPoss = new List<Vector3>();
|
|
|
|
|
+ time = 0;
|
|
|
|
|
+ gameObject.SetActive(true);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public Vector3 CalculateTargetPos(Vector3 originalPos)
|
|
public Vector3 CalculateTargetPos(Vector3 originalPos)
|