private void HandleAttack() { Vector3 attackDir = animatedWalker.GetLastMoveVector(); if (Input.GetMouseButtonDown(0)) { attackDir = (UtilsClass.GetMouseWorldPosition() - GetPosition()).normalized; } if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0)) { // Attack SetStateBusy(); EnemyHandler enemyHandler = EnemyHandler.GetClosestEnemy(GetPosition() + attackDir * 4f, 20f); if (enemyHandler != null) { enemyHandler.Damage(this); attackDir = (enemyHandler.GetPosition() - GetPosition()).normalized; transform.position = enemyHandler.GetPosition() + attackDir * -12f; } else { transform.position = transform.position + attackDir * 4f; } /* * unitAnimation.PlayAnimForced(UnitAnimType.GetUnitAnimType("dBareHands_PunchStartup"), attackDir, 2f, (UnitAnim unitAnim) => { * unitAnimation.PlayAnimForced(UnitAnimType.GetUnitAnimType("dBareHands_PunchQuickAttack"), attackDir, 1f, (UnitAnim unitAnim2) => SetStateNormal(), null, null); * }, null, null); */ UnitAnimType activeAnimType = unitAnimation.GetActiveAnimType(); switch (activeAnimType.GetName()) { default: unitAnimation.PlayAnimForced(UnitAnimType.GetUnitAnimType("dBareHands_PunchQuick"), attackDir, 1f, (UnitAnim unitAnim2) => SetStateNormal(), null, null); break; case "dBareHands_PunchQuick": unitAnimation.PlayAnimForced(UnitAnimType.GetUnitAnimType("dBareHands_KickQuick"), attackDir, 1f, (UnitAnim unitAnim2) => SetStateNormal(), null, null); break; } //unitAnimation.PlayAnimForced(UnitAnimType.GetUnitAnimType("dBareHands_PunchQuickAttack"), attackDir, 1f, (UnitAnim unitAnim2) => SetStateNormal(), null, null); /* * Transform swordSlashTransform = Instantiate(GameAssets.i.pfSwordSlash, GetPosition() + attackDir * 13f, Quaternion.Euler(0, 0, UtilsClass.GetAngleFromVector(attackDir))); * swordSlashTransform.GetComponent<SpriteAnimator>().onLoop = () => Destroy(swordSlashTransform.gameObject); * * UnitAnimType activeAnimType = unitAnimation.GetActiveAnimType(); * if (activeAnimType == GameAssets.UnitAnimTypeEnum.dSwordTwoHandedBack_Sword) { * swordSlashTransform.localScale = new Vector3(swordSlashTransform.localScale.x, swordSlashTransform.localScale.y * -1, swordSlashTransform.localScale.z); * unitAnimation.PlayAnimForced(GameAssets.UnitAnimTypeEnum.dSwordTwoHandedBack_Sword2, attackDir, 1f, (UnitAnim unitAnim) => SetStateNormal(), null, null); * } else { * unitAnimation.PlayAnimForced(GameAssets.UnitAnimTypeEnum.dSwordTwoHandedBack_Sword, attackDir, 1f, (UnitAnim unitAnim) => SetStateNormal(), null, null); * } */ } }
private void HandleAttack() { if (Input.GetKeyDown(KeyCode.Space)) { // Attack SetStateBusy(); Vector3 attackDir = lastMoveDir; EnemyHandler enemyHandler = getClosestEnemyHandlerFunc(GetPosition() + attackDir * 4f); if (enemyHandler != null) { // Has a target nearby attackDir = (enemyHandler.GetPosition() - GetPosition()).normalized; // Test if too close to dash const float tooCloseToDashDistance = 10f; if (Vector3.Distance(enemyHandler.GetPosition(), GetPosition()) > tooCloseToDashDistance) { // Dash towards attack distance transform.position = transform.position + attackDir * 4f; } // Is enemy within attack range? const float attackDistance = 30f; if (Vector3.Distance(enemyHandler.GetPosition(), GetPosition()) < attackDistance) { // Close enough to damage enemyHandler.GetHealthSystem().Damage(34); Blood_Handler.SpawnBlood(enemyHandler.GetPosition(), attackDir); } } else { // No nearby target transform.position = transform.position + attackDir * 4f; } lastMoveDir = attackDir; Transform swordSlashTransform = Instantiate(GameAssets.i.pfSwordSlash, GetPosition() + attackDir * 13f, Quaternion.Euler(0, 0, UtilsClass.GetAngleFromVector(attackDir))); swordSlashTransform.GetComponent <SpriteAnimator>().onLoop = () => Destroy(swordSlashTransform.gameObject); UnitAnimType activeAnimType = unitAnimation.GetActiveAnimType(); if (activeAnimType == GameAssets.UnitAnimTypeEnum.dSwordTwoHandedBack_Sword) { swordSlashTransform.localScale = new Vector3(swordSlashTransform.localScale.x, swordSlashTransform.localScale.y * -1, swordSlashTransform.localScale.z); unitAnimation.PlayAnimForced(GameAssets.UnitAnimTypeEnum.dSwordTwoHandedBack_Sword2, lastMoveDir, 1f, (UnitAnim unitAnim) => SetStateNormal(), null, null); } else { unitAnimation.PlayAnimForced(GameAssets.UnitAnimTypeEnum.dSwordTwoHandedBack_Sword, lastMoveDir, 1f, (UnitAnim unitAnim) => SetStateNormal(), null, null); } } }
public bool IsPlayingPunchAnimation() { return(unitAnimation.GetActiveAnimType().GetName() == "dBareHands_PunchQuick"); }