|
@@ -18,59 +18,68 @@ public enum TargetType
|
|
|
|
|
|
|
|
public enum SearchState
|
|
public enum SearchState
|
|
|
{
|
|
{
|
|
|
- NoTarget = 0,//搜索范围内没有目标
|
|
|
|
|
- InSearchScope = 1,//在搜索范围内发现目标,但不在攻击范围内
|
|
|
|
|
- InAttackScope = 2,//目标在攻击范围内
|
|
|
|
|
|
|
+ NoTarget = 0, //搜索范围内没有目标
|
|
|
|
|
+ InSearchScope = 1, //在搜索范围内发现目标,但不在攻击范围内
|
|
|
|
|
+ InAttackScope = 2, //目标在攻击范围内
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public class Enemy : MoveCharacter
|
|
public class Enemy : MoveCharacter
|
|
|
{
|
|
{
|
|
|
|
|
+ [Header("敌方单位属性")]
|
|
|
public int id;
|
|
public int id;
|
|
|
|
|
+ public int sortingOrder = 0;
|
|
|
|
|
+ public bool canFly = false;
|
|
|
|
|
+ public bool isBack = false; //往反方向走
|
|
|
|
|
+ public float flyHeight;
|
|
|
|
|
+ public float flyUpSpeed = 10;
|
|
|
public float jumpSpeed = 10;
|
|
public float jumpSpeed = 10;
|
|
|
|
|
+ public float maxMoveSpeed, minMoveSpeed;
|
|
|
|
|
+ public float runSpeed;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ [Header("敌方单位组件")]
|
|
|
public SearchState searchState;
|
|
public SearchState searchState;
|
|
|
|
|
+
|
|
|
|
|
+ [Header("攻击")]
|
|
|
public float attackDistance;
|
|
public float attackDistance;
|
|
|
public float maxAttackDis, minAttackDis;
|
|
public float maxAttackDis, minAttackDis;
|
|
|
public bool needToChange;
|
|
public bool needToChange;
|
|
|
- public bool canFly = false;
|
|
|
|
|
- public float flyHeight;
|
|
|
|
|
- public float flyUpSpeed = 10;
|
|
|
|
|
- public int sortingOrder = 0;
|
|
|
|
|
-
|
|
|
|
|
public float attackRatio;
|
|
public float attackRatio;
|
|
|
- public float maxMoveSpeed, minMoveSpeed;
|
|
|
|
|
- public float runSpeed;
|
|
|
|
|
- public int dropSoul = 1;
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+ [Header("掉落魂")]
|
|
|
|
|
+ public int dropSoul = 1;
|
|
|
public float dropSoulAngle = 60f;
|
|
public float dropSoulAngle = 60f;
|
|
|
|
|
|
|
|
|
|
+ [Header("冲刺攻击")]
|
|
|
|
|
+ public GameObject aimEffect;
|
|
|
|
|
+ public DashEffect dashEffect;
|
|
|
|
|
+
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public bool noOnSearchState;
|
|
public bool noOnSearchState;
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public bool isFindingPlayer;
|
|
public bool isFindingPlayer;
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public bool isFindPlayer;
|
|
public bool isFindPlayer;
|
|
|
|
|
+
|
|
|
public float hateDistance;
|
|
public float hateDistance;
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public float distance;
|
|
public float distance;
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public Vector3 rushEndPos;
|
|
public Vector3 rushEndPos;
|
|
|
- public GameObject aimEffect;
|
|
|
|
|
|
|
+
|
|
|
public float aimDistance;
|
|
public float aimDistance;
|
|
|
public float rushTime;
|
|
public float rushTime;
|
|
|
public float rushSpeed;
|
|
public float rushSpeed;
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public float time;
|
|
public float time;
|
|
|
public float readyCD;
|
|
public float readyCD;
|
|
|
- public DashEffect dashEffect;
|
|
|
|
|
|
|
+
|
|
|
[HideInInspector]
|
|
[HideInInspector]
|
|
|
public Vector3 targetDir;
|
|
public Vector3 targetDir;
|
|
|
public bool haveDownRush; //冲刺结束后是否可以接落地斩
|
|
public bool haveDownRush; //冲刺结束后是否可以接落地斩
|
|
|
public bool rushHaveAttack; //冲刺是否带伤害
|
|
public bool rushHaveAttack; //冲刺是否带伤害
|
|
|
public float downRushTime;
|
|
public float downRushTime;
|
|
|
public float finishRushTime;
|
|
public float finishRushTime;
|
|
|
- public bool isBack = false; //往反方向走
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
private void Awake()
|
|
private void Awake()
|
|
|
{
|
|
{
|
|
@@ -105,9 +114,6 @@ public class Enemy : MoveCharacter
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
OnState();
|
|
OnState();
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public override Vector3 GetMoveDir()
|
|
public override Vector3 GetMoveDir()
|
|
@@ -385,16 +391,6 @@ public class Enemy : MoveCharacter
|
|
|
ChangeState(CharacterState.Fall);
|
|
ChangeState(CharacterState.Fall);
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
- //if (btnJumpPress || cacheJumpTime > 0)
|
|
|
|
|
- //{
|
|
|
|
|
- // if (!airJumped && rb.velocity.y < airJumpSpeed)
|
|
|
|
|
- // {
|
|
|
|
|
- // airJumped = true;
|
|
|
|
|
- // AirJump();
|
|
|
|
|
- // break;
|
|
|
|
|
- // }
|
|
|
|
|
- //}
|
|
|
|
|
-
|
|
|
|
|
rb.velocity += Vector3.up * extraRiseGravity * Time.deltaTime;
|
|
rb.velocity += Vector3.up * extraRiseGravity * Time.deltaTime;
|
|
|
break;
|
|
break;
|
|
|
case CharacterState.Fall:
|
|
case CharacterState.Fall:
|
|
@@ -410,48 +406,8 @@ public class Enemy : MoveCharacter
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
- //if (foot.canStepPlayers.Count > 0)
|
|
|
|
|
- //{
|
|
|
|
|
- // Jump(jumpSpeed / 2);
|
|
|
|
|
- // StepOther();
|
|
|
|
|
- // break;
|
|
|
|
|
- //}
|
|
|
|
|
- //if (foot.canStepEnemyList.Count > 0)
|
|
|
|
|
- //{
|
|
|
|
|
- // Jump(jumpSpeed / 2);
|
|
|
|
|
- // StepEnemy();
|
|
|
|
|
- // break;
|
|
|
|
|
- //}
|
|
|
|
|
- //if (btnJumpPress || cacheJumpTime > 0)
|
|
|
|
|
- //{
|
|
|
|
|
- // if (!airJumped)
|
|
|
|
|
- // {
|
|
|
|
|
- // airJumped = true;
|
|
|
|
|
- // AirJump();
|
|
|
|
|
- // break;
|
|
|
|
|
- // }
|
|
|
|
|
- // else if (canJumpTick >= runner.Tick)
|
|
|
|
|
- // {
|
|
|
|
|
- // Jump();
|
|
|
|
|
- // break;
|
|
|
|
|
- // }
|
|
|
|
|
- //}
|
|
|
|
|
rb.velocity += Vector3.up * extraFallGravity * Time.deltaTime;
|
|
rb.velocity += Vector3.up * extraFallGravity * Time.deltaTime;
|
|
|
break;
|
|
break;
|
|
|
- //case CharacterState.Hurt:
|
|
|
|
|
- // if (hurtKeepTime <= 0 && rb.velocity.magnitude < hurtChangeVelocity)
|
|
|
|
|
- // {
|
|
|
|
|
- // ChangeState(CharacterState.Idle);
|
|
|
|
|
- // break;
|
|
|
|
|
- // }
|
|
|
|
|
- // if (!foot.TrigGround && !canFly)
|
|
|
|
|
- // {
|
|
|
|
|
- // rb.velocity += Vector3.up * extraFallGravity * Time.deltaTime;
|
|
|
|
|
- // }
|
|
|
|
|
- // Vector3 vel = rb.velocity;
|
|
|
|
|
- // vel.x = vel.x * (1 - decelerationRatio * Time.deltaTime);
|
|
|
|
|
- // rb.velocity = vel;
|
|
|
|
|
- // break;
|
|
|
|
|
case CharacterState.Attack:
|
|
case CharacterState.Attack:
|
|
|
if (attackTime <= 0)
|
|
if (attackTime <= 0)
|
|
|
{
|
|
{
|
|
@@ -766,27 +722,7 @@ public class Enemy : MoveCharacter
|
|
|
break;
|
|
break;
|
|
|
case CharacterState.Fall:
|
|
case CharacterState.Fall:
|
|
|
aniCollider.Play("Fall", 0, 0);
|
|
aniCollider.Play("Fall", 0, 0);
|
|
|
- //animalAni.SetInteger("state", (int)PlayerState.Fall);
|
|
|
|
|
break;
|
|
break;
|
|
|
- //case CharacterState.Hurt:
|
|
|
|
|
- // switch (oldState)
|
|
|
|
|
- // {
|
|
|
|
|
- // case CharacterState.ReadyToRush:
|
|
|
|
|
- // case CharacterState.RushAttack:
|
|
|
|
|
- // case CharacterState.ReadyToDownRush:
|
|
|
|
|
- // case CharacterState.DownRush:
|
|
|
|
|
- // case CharacterState.Rush:
|
|
|
|
|
- // state = oldState;
|
|
|
|
|
- // beRepelValue = totalBeRepelValue;
|
|
|
|
|
- // break;
|
|
|
|
|
- // default:
|
|
|
|
|
- // ani.Play("hitted", 0, 0);
|
|
|
|
|
- // aniCollider.Play("Hurt", 0, 0);
|
|
|
|
|
- // invincibleTime = totalInvincibleTime;
|
|
|
|
|
- // hurtKeepTime = minHurtKeepTime;
|
|
|
|
|
- // break;
|
|
|
|
|
- // }
|
|
|
|
|
- // break;
|
|
|
|
|
case CharacterState.Float:
|
|
case CharacterState.Float:
|
|
|
canMove = false;
|
|
canMove = false;
|
|
|
break;
|
|
break;
|