override public BT_Status UpdateAction() { Direction testDir = followPlayer.DetectDirection(transform.position, player.transform.position); switch (testDir) { case Direction.LEFT: mySpriteRend.flipX = false; break; case Direction.RIGHT: mySpriteRend.flipX = true; break; } if (!throwBalls) { transform.position = Vector3.MoveTowards(transform.position, tempTrans.position, Time.deltaTime * 5.0f); if ((tempTrans.position - transform.position).magnitude < 0.1f) { myAnimator.SetBool("KelpieShoot", true); throwBalls = true; //InmortalGo.SetActive(true); } } else { timerAnimation += Time.deltaTime; if (timerAnimation >= 1.25f && !doneThrow) { for (int i = 0; i < numOfBalls; i++) { timerCountBalls = 0; ballsSpawned++; GameObject go = Instantiate(WaterBall); BouncingBall bounce = go.GetComponent <BouncingBall>(); if (bounce != null) { Direction dir; if (transform.position.x > player.transform.position.x) { dir = Direction.LEFT; } else { dir = Direction.RIGHT; } switch (dir) { case Direction.LEFT: Vector3 left = -rightTrans.transform.right; if (i == 0) { bounce.SetDirection(left); } else if (i == 1) { Vector3 newDirUp = Quaternion.AngleAxis(45.0f, Vector3.forward) * left; bounce.SetDirection(newDirUp); } else if (i == 2) { Vector3 newDirDown = Quaternion.AngleAxis(-45.0f, Vector3.forward) * left; bounce.SetDirection(newDirDown); } break; case Direction.RIGHT: Vector3 right = rightTrans.transform.right; if (i == 0) { bounce.SetDirection(right); } else if (i == 1) { Vector3 newDirUp = Quaternion.AngleAxis(45.0f, Vector3.forward) * right; bounce.SetDirection(newDirUp); } else if (i == 2) { Vector3 newDirDown = Quaternion.AngleAxis(-45.0f, Vector3.forward) * right; bounce.SetDirection(newDirDown); } break; } } go.transform.position = transform.position; } doneThrow = true; } else if (timerAnimation >= 2.10f && doneThrow) { myAnimator.SetBool("KelpieShoot", false); doneThrow = false; isFinish = true; InmortalGo.SetActive(false); } } return(BT_Status.RUNNING); }