예제 #1
0
    public static FireballController CreateFireball(float lifetime, float explosionRadius, Damage initialDamage, Status status, float size, float speed)
    {
        FireballController fireball = Object.Instantiate(instance.fireball, Vector3.zero, Quaternion.identity).GetComponent <FireballController>();

        fireball.Initialize(lifetime, explosionRadius, initialDamage, status, size, speed);
        return(fireball);
    }
예제 #2
0
 void Start()
 {
     player      = GameObject.FindGameObjectWithTag("Player");
     playerStats = player.GetComponent <PlayerStats>();
     fbc         = GetComponentInParent <FireballController>();
     fireball    = GameObject.FindGameObjectWithTag("Player").GetComponentInChildren <Fireball>();
 }
    void shootFire()
    {
        //Shoot Fireball

        FireballController projectile = ObjectFactory.CreateFireball(10f, fireballRadius, fireballDamage, fireballStatus, fireballSize, fireballSpeed);

        projectile.transform.position = transform.position + transform.forward;
        projectile.GetComponent <Rigidbody>().velocity = cam.ScreenPointToRay(Input.mousePosition).direction *fireballSpeed;
    }
예제 #4
0
 public void Blasted(FireballController fbController)
 {
     if (acManager != null && fbController.iceWallHitCount <= 0 && !isFree)
     {
         acManager.Fireballed();
     }
     isMelted = true;
     StartCoroutine(Melt());
 }
예제 #5
0
    public void OnReadyToFire()
    {
        FireballController fireball = FireballPrefab.PrefabInstantiate(FireDamage, transform.position,
                                                                       (Planet.transform.position - transform.position).normalized * FireImpulse);


        CheckShots();
        counter.Reset(Random.Range(0, FirePeriod * 0.2f));
    }
예제 #6
0
    public FireballController PrefabInstantiate(float damage, Vector3 position, Vector2 impulse)
    {
        FireballController fireball = ((GameObject)GameObject.Instantiate(gameObject)).GetComponent <FireballController>();

        fireball.Damage             = damage;
        fireball.transform.position = position;
        fireball.GetComponent <Rigidbody2D>().AddForce(impulse, ForceMode2D.Impulse);
        return(fireball);
    }
예제 #7
0
    protected override AttackController GetAttack()
    {
        var    attackType = new FireballController().GetType();
        string attackName = "Fireball";

        GameObject         attackObject     = (GameObject)Instantiate(Resources.Load(attackPrefabName + attackName));
        FireballController attackController = (FireballController)attackObject.GetComponent(attackType);

        return(attackController);
    }
예제 #8
0
    public void Blasted(FireballController fbController)
    {
        if (!isMelted)
        {
            isMelted = true;

            if (!isFree && fbController.iceWallHitCount < 1)
            {
                acManager.Fireballed();
            }


            StartCoroutine(Melt());
        }
    }
예제 #9
0
    public void FireballAction()
    {
        var fireballModel = new FireballModel
        {
            prefab         = fireballPrefab,
            ownerTag       = Tags.PLAYER,
            hitTag         = Tags.ENEMY,
            originPosition = SwordAttackPosition.position,
            direction      = transform.right,
            damage         = 1
        };

        FireballController.CreateFireball(fireballModel);
        fireballCreation.Play();
    }
예제 #10
0
    public void CreateFireball()
    {
        var fireballDirection = (playerTransform.position - flameOriginPosition.position).normalized;

        var fireballModel = new FireballModel
        {
            prefab         = fireballPrefab,
            ownerTag       = Tags.ENEMY,
            hitTag         = Tags.PLAYER,
            originPosition = flameOriginPosition.position,
            direction      = fireballDirection,
            damage         = 1
        };

        FireballController.CreateFireball(fireballModel);
        fireballCreation.PlayOneShot(fireballCreation.clip, 0.75f);
    }
예제 #11
0
    public void createFireball()
    {
        Vector3 currentPosition = playerID.transform.position;
        Vector3 mousePos        = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector3 fireballDir     = mousePos - currentPosition;

        fireballDir.z = 0;
        fireballDir.Normalize();
        float              angle              = Mathf.Atan2(fireballDir.y, fireballDir.x) * Mathf.Rad2Deg;
        GameObject         fireballID         = (GameObject)Instantiate(fireballPrefab, currentPosition + fireballDir / 2, Quaternion.identity);
        FireballController fireballController =
            (FireballController)fireballID.GetComponent <FireballController>();

        fireballController.SetfireBall(fireballDir, speed, angle);
        playerID.transform.rotation =
            Quaternion.Slerp(transform.rotation,
                             Quaternion.Euler(0, 0, angle),
                             castTurnSpeed * Time.deltaTime);
    }
 protected override AttackController GetAttack()
 {
     if (levelManager.GetWarrior().IsWarriored(gameObject))
     {
         var             attackType       = new PunchController().GetType();
         string          attackName       = (isPowerOn) ? "SuperPunch" : "Punch";
         GameObject      attackObject     = (GameObject)Instantiate(Resources.Load(attackPrefabName + attackName));
         PunchController attackController = (PunchController)attackObject.GetComponent(attackType);
         return(attackController);
     }
     else
     {
         var                attackType       = new FireballController().GetType();
         string             attackName       = (isPowerOn) ? "SuperFireball" : "Fireball";
         GameObject         attackObject     = (GameObject)Instantiate(Resources.Load(attackPrefabName + attackName));
         FireballController attackController = (FireballController)attackObject.GetComponent(attackType);
         return(attackController);
     }
 }
예제 #13
0
 void Start()
 {
     fbc = GetComponentInParent <FireballController>();
 }
예제 #14
0
    public void takeMove()
    {
        //print (moveQueue.Count + "for player " + GetPlayerID());
        if (!hasJumped || moveQueue.Count > 0)
        {
            if (opponent.transform.position.x < transform.position.x && transform.localRotation.y != 180)             //block checks if a player needs to spin around
            {
                transform.localEulerAngles = new Vector3(0, 180, 0);
            }
            if (opponent.transform.position.x > transform.position.x && transform.localRotation.y != 0)
            {
                transform.localEulerAngles = Vector3.zero;
            }
        }                                                                                                                                                               //block ends

        moveQueue [0].framesLeft -= 1;
        MoveClass thisMove           = moveQueue [0];
        int       currentFrameNumber = thisMove.initialFrames - thisMove.framesLeft;

        if (thisMove.name != "Defend")                          //If the player has continued blocking since last turn,
        {
            blocking = false;                                   //then there is no gap where they are not blocking
        }
        //Debug.Log("Player " + playerID + ": " + nextMove);

        switch (thisMove.name)
        {
        case "Knocked Down":
            if (currentFrameNumber == 0)
            {
                invuln = true;
            }
            if (currentFrameNumber == moveQueue[0].initialFrames)
            {
                moveCount = 0;
                invuln    = false;
            }
            break;

        case "Light Attack":
        case "Medium Attack":
            if (thisMove.activeFrames[0] == currentFrameNumber)
            {
                myLimb.SetHitBox(thisMove);
            }
            if (thisMove.activeFrames[0] + thisMove.activeFrames.Length - 1 < currentFrameNumber)
            {
                myLimb.ClearBox();
            }
            break;


        case "Hit":
            transform.position += transform.right * -thisMove.kB;
            break;


        case "Heavy Attack":
            if (currentFrameNumber < 3)
            {
                transform.Translate(Vector3.right * .3f);
            }
            if (currentFrameNumber == 2)
            {
                myLimb.SetHitBox(moveQueue [0]);
            }
            if (currentFrameNumber == 3)
            {
                myLimb.ClearBox();
            }
            if (currentFrameNumber == moveQueue[0].initialFrames)
            {
                moveCount = 0;
            }
            break;

        case "Defend":
            blocking = true;
            break;

        case "Walk Forward":
            gameObject.transform.Translate(Vector3.right * walkSpeed);
            //	myDino.animation.Play ("walk");
            break;

        case "Walk Back":
            gameObject.transform.Translate(-Vector3.right * walkSpeed);
            //	myDino.animation.Play ("walk");
            break;

        case "Forward Dash":
            gameObject.transform.Translate(Vector3.right * forwardDash / 3);
            break;

        case "Back Dash":
            if (currentFrameNumber == 0)
            {
                invuln = true;
            }
            if (moveCount == 1)
            {
                invuln = false;
            }
            gameObject.transform.Translate(-Vector3.right * backDash / 5);
            moveCount++;
            if (moveCount == 5)
            {
                moveCount = 0;
            }
            break;

        case "Jump":
            if (currentFrameNumber <= 3)
            {
                transform.Translate(Vector3.up * jumpFactor);
            }
            if (currentFrameNumber > 3)
            {
                transform.Translate(Vector3.down * jumpFactor);
            }

            /*if (jumpFrames == 0) {
             *      hasJumped = false;
             *      iP2.setAirAttack (playerID);
             * }*/
            break;

        case "Jump Right":

            if (currentFrameNumber <= 3)
            {
                transform.Translate(Vector3.up * jumpFactor);
            }
            if (currentFrameNumber > 3)
            {
                transform.Translate(Vector3.down * jumpFactor);
            }
            gameObject.transform.Translate(Vector3.right * forwardDash / 3);

            /*if (jumpFrames == 0) {
             *      hasJumped = false;
             *      iP2.setAirAttack (playerID);
             * }*/
            break;

        case "Jump Left":
            if (currentFrameNumber <= 3)
            {
                transform.Translate(Vector3.up * jumpFactor);
            }
            if (currentFrameNumber > 3)
            {
                transform.Translate(Vector3.down * jumpFactor);
            }
            gameObject.transform.Translate(-Vector3.right * forwardDash / 3);

            /*if (jumpFrames == 0) {
             *      hasJumped = false;
             *      iP2.setAirAttack (playerID);
             * }*/
            break;


        case "Air Attack":
        case "Jump AA":
        case "Jump Left AA":
        case "Jump Right AA":
            if (thisMove.activeFrames[0] == currentFrameNumber)
            {
                myLimb.SetHitBox(thisMove);
            }
            if (thisMove.activeFrames[0] + 1 < currentFrameNumber)
            {
                myLimb.ClearBox();
            }

            if (currentFrameNumber <= 3)
            {
                transform.Translate(Vector3.up * jumpFactor);
            }
            if (currentFrameNumber > 3 && currentFrameNumber < 7)
            {
                transform.Translate(Vector3.down * jumpFactor);
            }

            if (thisMove.name == "Jump Left AA" && currentFrameNumber < 7)
            {
                gameObject.transform.Translate(-Vector3.right * jumpFactor);
            }
            if (jumpDirection == "Jump Right AA" && currentFrameNumber < 7)
            {
                gameObject.transform.Translate(Vector3.right * jumpFactor);
            }

            break;

        case "Fireball":
            if (moveCount == 2)
            {
                GameObject temp = (GameObject)Instantiate(fireball, transform.position, transform.localRotation);
                myBall = temp.GetComponent <FireballController> ();
                myBall.myTarget(opponent);
            }
            moveCount++;
            if (moveCount == 9)
            {
                moveCount = 0;
            }
            break;


        case "Dino-Punch":
            if (moveCount == 0)
            {
                invuln = true;
                myLimb.SetHitBox(moveQueue [0]);
            }
            if (moveCount == 3)
            {
                invuln = false;
                myLimb.ClearBox();
            }
            moveCount++;
            if (moveCount == 8)
            {
                moveCount = 0;
            }
            break;

        case "Throw":
            if (moveCount == 0)
            {
                myLimb.SetHitBox(moveQueue [0]);
                hasThrown = true;
            }
            if (moveCount == 1)
            {
                myLimb.ClearBox();
            }
            if (moveCount == 2)
            {
                hasThrown = false;
            }
            moveCount++;
            if (moveCount == 5)
            {
                moveCount = 0;
            }
            break;


        default:
            break;
        }

        if (myBall != null)
        {
            myBall.nextMove();
        }
        transform.position = new Vector3(Mathf.Clamp(transform.localPosition.x, -5.874f, 5.874f),
                                         Mathf.Clamp(transform.localPosition.y, 1.04f, 4f), transform.localPosition.z);
        if (moveQueue [0].framesLeft == 0)
        {
            moveQueue.RemoveAt(0);
        }
    }
예제 #15
0
 void OnCollisionEnter(Collision other)
 {
     // Debug.Log("Fireball OnCollisionEnter: " + other.gameObject.tag);
     FireballController.FireballCollision(this, other);
 }