Beispiel #1
0
    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);
    }