void OnHitedHandler() { if (!body.IsPlaying()) { isHited = false; } }
// Update is called once per frame void Update() { if (anim.IsPlaying()) { if (anim.GetCurFrameIndex() < 3) { if (isWithFire) { fire.localPosition = firePos[anim.GetCurFrameIndex()]; } } else { if (!isArrowOut) { isArrowOut = true; archerCtrl.ShowArrowUp(index); if (isWithFire) { fire.gameObject.SetActive(false); } SoundController.Instance.PlaySound("00001"); } } } }
void OnIdleHandle() { if (!head.IsPlaying("Idle")) { head.Play("Idle"); body.Play("Idle"); horse.Play("Idle"); } if (WarSceneController.state == WarSceneController.State.Running) { if (side == WarSceneController.WhichSide.Left) { timeTick += Time.deltaTime; if (timeTick >= leftGeneralIdleTime) { timeTick = 0; if (!armyAssaultFlag) { armyAssaultFlag = true; GeneralInfo rGCtrl = Informations.Instance.GetGeneralInfo(WarSceneController.rightGeneralIdx); if (gInfo.healthCur < 20 && gInfo.soldierCur + gInfo.knightCur < 10 && (rGCtrl.healthCur > 50 || rGCtrl.soldierCur + rGCtrl.knightCur > 10) && warCtrl.rightGeneral.GetState() != State.Escape) { warCtrl.SetArmyEscape(WarSceneController.WhichSide.Left); return; } leftGeneralIdleTime = Random.Range(2, 10); if (gInfo.soldierCur + gInfo.knightCur > 0) { warCtrl.SetArmyAssault(WarSceneController.WhichSide.Left); } } else { SetRun(); } } } } }
public void SetPause() { if (anim == null) { anim = GetComponent <exSpriteAnimation>(); } if (anim != null && anim.IsPlaying()) { anim.Pause(); } }
// Update is called once per frame void Update() { if (!anim.IsPlaying(anim.defaultAnimation.name)) { timeTick += Time.deltaTime; if (timeTick < 0.5f) { sprite.color = new Color(1, 1, 1, 1 - timeTick * 2); } else { Destroy(gameObject); } } }
public void Update() { // If the character can revive if (IsDead() && CanRevive()) { ReviveTimeCurrent += Time.deltaTime; if (ReviveTimeCurrent >= ReviveTime) { Revive(); ReviveTimeCurrent = 0; } } // If the character can regenerate if (CurrentHealth < TotalHealth && !IsDead() && CanRegenerate()) { RegenerationTimeCurrent += Time.deltaTime; // Time lapsed after being hit if (RegenerationTimeCurrent >= RegenerationTime) { RegenerationStepTimeCurrent += Time.deltaTime; // Delay between each regeneration if (RegenerationStepTimeCurrent >= RegenerationStepTime) { CurrentHealth += RegenerationStep; UpdateHealthDisplay(); RegenerationStepTimeCurrent = 0; } } } // Time calculation for delay attack time attackDelayTimer += Time.deltaTime; if (attackDelayTimer >= attackDelayTotalTime) { canAttack = true; attackDelayTimer = 0; } // Attack type calculation //SetAttackTypeToExecute(0); distanceTimer += Time.deltaTime; if (distanceTimer >= distanceUpdateInterval) { GetDistance(); distanceTimer = 0; } // Reset attack animation if (Animations != null && !Animations.IsPlaying(CurrentAnimation)) { PlayingAttack = false; CurrentAnimation = ""; } /* * // Health bar timer * if (DisplayHealthText) * { * healthBarTimer += Time.deltaTime; * if (healthBarTimer >= Constants.DISPLAY_TEXT_HEALTH_TIME) * { * Destroy(HealthDisplay); * DisplayHealthText = false; * healthBarTimer = 0; * } * }*/ }
// 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(); }
void CalcDirection() { if (route == null || route.Count == 0) { return; } Vector3 target = route[0]; Vector3 targetDir = target - transform.position; Vector3 forward = Vector3.right; float angle = Vector3.Angle(targetDir, forward); int flag = 0; if (angle <= 30) { flag = 0; } else if (angle > 150) { flag = 1; } else if (angle > 30 && angle <= 90) { if (target.y >= transform.position.y) { flag = 2; } else { flag = 4; } } else if (angle > 90 && angle <= 150) { if (target.y > transform.position.y) { flag = 3; } else { flag = 5; } } exSprite moveSprite = GetComponent <exSprite>(); exSpriteAnimation moveAnim = GetComponent <exSpriteAnimation>(); exSprite flagSprite = flagCtrl.GetComponent <exSprite>(); BoxCollider flagCol = flagCtrl.GetComponent <BoxCollider>(); if (flag % 2 == 0) { if (!isHFlipped) { isHFlipped = true; moveSprite.HFlip(); flagSprite.HFlip(); flagCol.center = new Vector3(-flagCol.center.x, flagCol.center.y, flagCol.center.z); } } else { if (isHFlipped) { isHFlipped = false; moveSprite.HFlip(); flagSprite.HFlip(); flagCol.center = new Vector3(-flagCol.center.x, flagCol.center.y, flagCol.center.z); } } Vector3 pos = Vector3.zero; flag /= 2; switch (state) { case ArmyState.Running: animName = animNames[flag]; pos = flagPos[flag]; break; case ArmyState.Escape: animName = animNames[flag + 3]; pos = flagPos[flag + 6]; break; case ArmyState.Victory: animName = animNames[flag + 6]; pos = flagPos[flag * 3 + 9]; break; } if (!moveAnim.IsPlaying(animName)) { moveAnim.Play(animName); } if (!isHFlipped) { pos.x = -pos.x; } flagCtrl.localPosition = pos; }