public void SetResume() { if (anim == null) { anim = GetComponent <exSpriteAnimation>(); } if (anim != null && anim.IsPaused()) { anim.Resume(); } }
// Update is called once per frame void Update() { if (WarSceneController.isGamePause) { return; } if (WarSceneController.state == WarSceneController.State.Beginning || WarSceneController.state == WarSceneController.State.Menu || WarSceneController.state == WarSceneController.State.End || WarSceneController.state == WarSceneController.State.Assault) { return; } if (state == State.Dead) { OnDyingHandler(); return; } if (isMagicLock) { timeCoolDownTick -= Time.deltaTime; if (timeCoolDownTick <= 0) { isMagicLock = false; timeCoolDownTick = 0; anim.Resume(); } return; } if (isParrying) { OnParryHandler(); } if (isFighting) { OnFightingAct(); return; } if (timeCoolDownTick > 0) { timeCoolDownTick -= Time.deltaTime; if (timeCoolDownTick <= 0) { timeCoolDownTick = 0; } else { return; } } if (isFighting || isParrying) { return; } switch (state) { case State.Idle: { if (!anim.IsPlaying("Idle")) { anim.Play("Idle"); } if (CheckCanFight()) { return; } RangeSolidersFightCheck(); } break; case State.Running: { if (!anim.IsPlaying("Run")) { anim.Play("Run"); } if (WarSceneController.state == WarSceneController.State.Dead) { SetRandomRun(transform.localPosition, false); return; } if (targetEnemy != null && ((side == WarSceneController.WhichSide.Left && transform.localPosition.x - targetEnemy.localPosition.x > -100) || side == WarSceneController.WhichSide.Right && transform.localPosition.x - targetEnemy.localPosition.x < 100)) { Vector3 posBK = transform.localPosition; Vector3 targetPos = Vector3.zero; if (transform.localPosition.x > targetEnemy.localPosition.x) { targetPos = new Vector3(targetEnemy.localPosition.x + hitDistance - locationStepX, targetEnemy.localPosition.y, targetEnemy.localPosition.z); } else { targetPos = new Vector3(targetEnemy.localPosition.x - hitDistance + locationStepX, targetEnemy.localPosition.y, targetEnemy.localPosition.z); } int x = (int)((targetPos.x + manPosMaxX) / locationStepX); int y = (int)((targetPos.y + manPosMaxY) / locationStepY); if (warCtrl.GetLocationFlag(x, y) != 0 && warCtrl.GetLocationFlag(x, y) != index) { SetRandomRun(targetPos, false); return; } transform.localPosition = Vector3.MoveTowards(transform.localPosition, targetPos, runSpeed * Time.deltaTime); if ((transform.localPosition.x > posBK.x && transform.localScale.x > 0) || (transform.localPosition.x < posBK.x && transform.localScale.x < 0)) { transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } if (transform.localPosition == targetPos) { if (isEnemyGeneral == false || (side == WarSceneController.WhichSide.Left && (transform.localPosition.x > targetEnemy.localPosition.x || (transform.localPosition.x < targetEnemy.localPosition.x && Vector3.Distance(warCtrl.leftGeneral.transform.localPosition, warCtrl.rightGeneral.transform.localPosition) > 200))) || (side == WarSceneController.WhichSide.Right && (transform.localPosition.x < targetEnemy.localPosition.x || (transform.localPosition.x > targetEnemy.localPosition.x && Vector3.Distance(warCtrl.leftGeneral.transform.localPosition, warCtrl.rightGeneral.transform.localPosition) > 200)))) { CheckCanFight(); } else { SetRandomRun(targetPos, false); } } } else { Vector3 pos = transform.localPosition; if (side == WarSceneController.WhichSide.Left) { pos = new Vector3(pos.x + runSpeed * Time.deltaTime, pos.y, pos.z); if (transform.localScale.x > 0) { transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } } else { pos = new Vector3(pos.x - runSpeed * Time.deltaTime, pos.y, pos.z); if (transform.localScale.x < 0) { transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } } pos.x = Mathf.Clamp(pos.x, -WarSceneController.manPosMaxX + 100, WarSceneController.manPosMaxX - 100); transform.localPosition = pos; } RangeSolidersFightCheck(); } break; case State.RandomRun: { if (!anim.IsPlaying("Run")) { anim.Play("Run"); } transform.localPosition = Vector3.MoveTowards(transform.localPosition, targetPosition, runSpeed * Time.deltaTime); if (transform.localPosition == targetPosition) { if (!isOnRandomRun) { SetRun(); } else { SetRandomRun(randomRunPos, true); } } } break; case State.MovingBack: { if (!anim.IsPlaying("Run")) { anim.Play("Run"); } Vector3 pos = transform.localPosition; if (side == WarSceneController.WhichSide.Left) { pos = new Vector3(pos.x - runSpeed * Time.deltaTime, pos.y, pos.z); } else { pos = new Vector3(pos.x + runSpeed * Time.deltaTime, pos.y, pos.z); } pos.x = Mathf.Clamp(pos.x, -WarSceneController.manPosMaxX + 100, WarSceneController.manPosMaxX - 100); transform.localPosition = pos; } break; case State.Escape: if (!anim.IsPlaying("Run")) { anim.Play("Run"); } if (side == WarSceneController.WhichSide.Left) { transform.localPosition = new Vector3(transform.localPosition.x - runSpeed * Time.deltaTime, transform.localPosition.y, transform.localPosition.z); if (transform.localPosition.x <= -WarSceneController.manPosMaxX + WarSceneController.locationStepX) { Destroy(gameObject); Destroy(mapPoint.gameObject); } else if (transform.localPosition.x <= -WarSceneController.manPosMaxX + 100) { float transparent = (transform.localPosition.x + WarSceneController.manPosMaxX) / 100f; anim.GetComponent <exSprite>().color = new Color(1, 1, 1, transparent); } } else { transform.localPosition = new Vector3(transform.localPosition.x + runSpeed * Time.deltaTime, transform.localPosition.y, transform.localPosition.z); if (transform.localPosition.x >= WarSceneController.manPosMaxX - WarSceneController.locationStepX) { Destroy(gameObject); Destroy(mapPoint.gameObject); } else if (transform.localPosition.x >= WarSceneController.manPosMaxX - 100) { float transparent = (WarSceneController.manPosMaxX - transform.localPosition.x) / 100f; anim.GetComponent <exSprite>().color = new Color(1, 1, 1, transparent); } } break; } CheckLocationState(); }
public void SetResume() { head.Resume(); body.Resume(); horse.Resume(); }