コード例 #1
0
 protected override void RunAI()
 {
     turn += Time.deltaTime;
     if (turn > 1f)
     {
         turn = 0;
         if (player.CurrentNode.Position.x < currentNode.Position.x)
         {
             if (!currentNode.Up.Occupied)
             {
                 currentNode.clearOccupied();
                 currentNode       = currentNode.Up;
                 currentNode.Owner = (this);
             }
         }
         else if (player.CurrentNode.Position.x > currentNode.Position.x)
         {
             if (!currentNode.Down.Occupied)
             {
                 currentNode.clearOccupied();
                 currentNode       = currentNode.Down;
                 currentNode.Owner = (this);
             }
         }
         else
         {
             Weapons.Hitbox b = Instantiate(bullet).GetComponent <Weapons.Hitbox>();
             b.transform.position = currentNode.Left.transform.position;
             b.CurrentNode        = currentNode.Left;
         }
     }
     transform.position = currentNode.transform.position;
 }
コード例 #2
0
ファイル: Enemy.cs プロジェクト: adlipin/CardNinjas
 void OnTriggerEnter(Collider col)
 {
     Weapons.Hitbox hitbox = col.gameObject.GetComponent <Weapons.Hitbox>();
     if (hitbox != null)
     {
         TakeDamage(hitbox.Damage);
     }
 }
コード例 #3
0
ファイル: Card.cs プロジェクト: szhangGT/CardNinjas
 public Card(string name, Weapons.Hitbox hitbox, string element, string type, int range, int damage, string actionType, GameObject prefab, string description, Sprite image)
 {
     this.name = name;
     SetElement(element);
     SetType(type);
     SetAction(hitbox, actionType, range, damage, prefab);
     this.description = description;
     this.image       = image;
 }
コード例 #4
0
 void OnTriggerEnter(Collider col)
 {
     Weapons.Hitbox hitbox = col.gameObject.GetComponent <Weapons.Hitbox>();
     if (hitbox != null && !invun)
     {
         hit    = true;
         damage = hitbox.Damage;
     }
 }
コード例 #5
0
 private void Tornado()
 {
     if (!doOnce)
     {
         doOnce = true;
         Weapons.Hitbox b = Instantiate(bullet).GetComponent <Weapons.Hitbox>();
         b.transform.position = currentNode.Left.transform.position;
         b.CurrentNode        = currentNode.Left;
     }
 }
コード例 #6
0
 public void Attack()
 {
     //print("ATTACK");
     anim.SetTrigger("FanSwipe");
     //GameObject.Instantiate(tornado, new Vector3(currentNode.Left.transform.position.x, currentNode.Left.transform.position.y, currentNode.Left.transform.position.z), Quaternion.identity);
     Weapons.Hitbox b = Instantiate(tornado).GetComponent <Weapons.Hitbox>();
     b.transform.position = currentNode.Left.transform.position;
     b.CurrentNode        = currentNode.Left;
     //GameObject.Instantiate(meleeEffect, new Vector3(currentNode.Left.transform.position.x, currentNode.Left.transform.position.y + 2, currentNode.Left.transform.position.z), Quaternion.identity);
     shouldAttack = false;
     sfx.PlaySong(0);
 }
コード例 #7
0
        protected override void RunAI()
        {
            //We change turns each second
            turn += Time.deltaTime;
            if (!hit)
            {
                if (turn > 1f)
                {
                    turn = 0;
                    //If player is above us
                    if (player.CurrentNode.Position.x < currentNode.Position.x)
                    {
                        //Check if we can move up.
                        if (currentNode.panelNotDestroyed(Util.Enums.Direction.Up) && !currentNode.Up.Occupied)
                        {
                            mechAnima.SetTrigger("Wait");
                            currentNode.clearOccupied();        //Say we aren't here
                            currentNode       = currentNode.Up; //Say we're there
                            currentNode.Owner = (this);         //Tell the place we own it.
                        }
                    }
                    //If player is above us
                    else if (player.CurrentNode.Position.x > currentNode.Position.x)
                    {
                        //Check if we can move up.
                        if (currentNode.panelNotDestroyed(Util.Enums.Direction.Down) && !currentNode.Down.Occupied)
                        {
                            mechAnima.SetTrigger("Wait");
                            currentNode.clearOccupied();          //Say we aren't here
                            currentNode       = currentNode.Down; //Say we're there
                            currentNode.Owner = (this);           //Tell the place we own it.
                        }
                    }
                    //If they are in front of us, ATTACK!.
                    else
                    {
                        mechAnima.SetTrigger("Fire");
                        Weapons.Hitbox b = Instantiate(bullet).GetComponent <Weapons.Hitbox>();
                        b.transform.position = currentNode.Left.transform.position;
                        b.CurrentNode        = currentNode.Left;
                        sfx.PlaySong(0);
                    }
                }
            }
            else
            {
                mechAnima.SetTrigger("Hurt");
                turn = 0;
            }

            transform.position = currentNode.transform.position;
        }
コード例 #8
0
ファイル: TenguBoss.cs プロジェクト: professorlust/CardNinjas
 private void Attack()
 {
     if (!doOnce)
     {
         doOnce             = true;
         transform.position = new Vector3(TeleportPos.x, TeleportPos.y, TeleportPos.z + 2f);
         Weapons.Hitbox h = Instantiate(meleeHitbox).GetComponent <Weapons.Hitbox>();
         h.transform.position = TeleportPos;
         GameObject g = Instantiate(meleeEffect);
         g.transform.position = TeleportPos;
         sfx.PlaySong(0);
     }
 }
コード例 #9
0
 private void SetAction(string actionType, int range, int damage, Weapons.Hitbox actionHitBox)
 {
     try
     {
         action        = (Actions.Action)Activator.CreateInstance(null, "Assets.Scripts.CardSystem.Actions." + actionType).Unwrap();
         action.Range  = range;
         action.Damage = damage;
         action.HitBox = actionHitBox;
     }
     catch (Exception e)
     {
         action = new Error();
         Debug.LogError(e.Message + ": for " + actionType + ".  Setting " + name + "'s action to Error.");
     }
 }
コード例 #10
0
ファイル: SpearAction.cs プロジェクト: adlipin/CardNinjas
        public override void useCard(Character actor)
        {
            Weapons.Hitbox temp = MonoBehaviour.Instantiate(hitbox);
            temp.Damage    = damage;
            temp.DeathTime = 3f;
            if (actor.Direction == Util.Enums.Direction.Left)
            {
                temp.transform.position = actor.CurrentNode.Left.transform.position;
            }

            if (actor.Direction == Util.Enums.Direction.Right)
            {
                temp.transform.position = actor.CurrentNode.Right.transform.position;
            }
        }
コード例 #11
0
ファイル: Card.cs プロジェクト: szhangGT/CardNinjas
 private void SetAction(Weapons.Hitbox hitbox, string actionType, int range, int damage, GameObject prefab)
 {
     try
     {
         action         = (Actions.Action)Activator.CreateInstance(null, "Assets.Scripts.CardSystem.Actions." + actionType).Unwrap();
         action.HitBox  = hitbox;
         action.Range   = range;
         action.Damage  = damage;
         action.Prefab  = prefab;
         action.Element = this.element;
     }
     catch (Exception e)
     {
         action = new Error();
         Debug.LogError(e.Message + ": for " + actionType + ".  Setting " + name + "'s action to Error.");
     }
 }
コード例 #12
0
        public override void useCard(Character actor)
        {
            Weapons.Hitbox temp = MonoBehaviour.Instantiate(hitbox);
            temp.Damage    = damage;
            temp.DeathTime = .2f;
            if (actor.Direction == Util.Enums.Direction.Left)
            {
                temp.transform.position = actor.CurrentNode.Left.transform.position;
                if (range > 1 && actor.CurrentNode.Left.panelExists(Util.Enums.Direction.Down))
                {
                    temp                    = MonoBehaviour.Instantiate(hitbox);
                    temp.Damage             = damage;
                    temp.DeathTime          = .2f;
                    temp.transform.position = actor.CurrentNode.Left.Down.transform.position;
                }
                if (range > 2 && actor.CurrentNode.Left.panelExists(Util.Enums.Direction.Up))
                {
                    temp                    = MonoBehaviour.Instantiate(hitbox);
                    temp.Damage             = damage;
                    temp.DeathTime          = .2f;
                    temp.transform.position = actor.CurrentNode.Left.Up.transform.position;
                }
            }

            if (actor.Direction == Util.Enums.Direction.Right)
            {
                temp.transform.position = actor.CurrentNode.Right.transform.position;
                if (range > 1 && actor.CurrentNode.Right.panelExists(Util.Enums.Direction.Down))
                {
                    temp                    = MonoBehaviour.Instantiate(hitbox);
                    temp.Damage             = damage;
                    temp.DeathTime          = .2f;
                    temp.transform.position = actor.CurrentNode.Right.Down.transform.position;
                }
                if (range > 2 && actor.CurrentNode.Right.panelExists(Util.Enums.Direction.Up))
                {
                    temp                    = MonoBehaviour.Instantiate(hitbox);
                    temp.Damage             = damage;
                    temp.DeathTime          = .2f;
                    temp.transform.position = actor.CurrentNode.Right.Up.transform.position;
                }
            }
        }
コード例 #13
0
        protected void spawnObjectUsingPrefabAsModel(int damage, int distance, float deathTime, bool piercing, Util.Enums.Direction direction, float speed, int timesCanPierce, bool isFlying, Grid.GridNode spawnPosition, Player.Character actor)
        {
            Weapons.Hitbox temp  = MonoBehaviour.Instantiate(hitbox);
            GameObject     model = MonoBehaviour.Instantiate(prefab);

            model.transform.parent = temp.transform;
            temp.Damage            = damage;
            temp.Distance          = distance == 0 ? 1 : distance;
            temp.DeathTime         = deathTime;
            temp.Piercing          = piercing;
            temp.Direction         = direction;
            temp.Speed             = speed;
            temp.TimesCanPierce    = timesCanPierce;
            temp.IsFlying          = isFlying;
            temp.Owner             = actor.gameObject;
            temp.Element           = element;
            Util.AddElement.AddElementByEnum(model, element, true);
            temp.CurrentNode        = spawnPosition;
            temp.transform.position = spawnPosition.transform.position;
        }
コード例 #14
0
ファイル: DestroyTile.cs プロジェクト: adlipin/CardNinjas
        public override void useCard(Character actor)
        {
            //Create a reference to the node we're trying to destroy. Since we do not know the
            //entire grid map, we will start at the actor origin and work from there.
            Grid.GridNode targetNode = actor.CurrentNode;

            //Keep track of the hitbox in case we want to do damage when we destroy a tile.
            Weapons.Hitbox temp = MonoBehaviour.Instantiate(hitbox);
            temp.Damage             = damage;
            temp.DeathTime          = .2f;
            temp.transform.position = targetNode.transform.position;


            if (actor.Direction == Util.Enums.Direction.Left)
            {
                for (int i = 0; i < range; i++)
                {
                    if (actor.CurrentNode.Left.panelExists(Util.Enums.Direction.Left))
                    {
                        temp.transform.position = targetNode.Left.transform.position;
                        targetNode = targetNode.Left;
                    }
                }
                //Destroy the furthest tile within range.
                targetNode.Type = Assets.Scripts.Util.Enums.FieldType.Destroyed;
            }

            if (actor.Direction == Util.Enums.Direction.Right)
            {
                for (int i = 0; i < range; i++)
                {
                    if (actor.CurrentNode.Right.panelExists(Util.Enums.Direction.Right))
                    {
                        temp.transform.position = targetNode.Right.transform.position;
                        targetNode = targetNode.Right;
                    }
                }
                //Destroy the furthest tile within range.
                targetNode.Type = Assets.Scripts.Util.Enums.FieldType.Destroyed;
            }
        }
コード例 #15
0
ファイル: Enemy.cs プロジェクト: professorlust/CardNinjas
 public virtual void OnTriggerEnter(Collider col)
 {
     if (col.tag == "Enemy")
     {
         Physics.IgnoreCollision(this.GetComponent <Collider>(), col);
     }
     Weapons.Hitbox hitbox = col.gameObject.GetComponent <Weapons.Hitbox>();
     if (hitbox != null)
     {
         if (invulerability <= 0)
         {
             hit = true;
             TakeDamage(hitbox.Damage, hitbox.Element);
             invulerability = invulerabilityTime;
         }
     }
     Weapons.Projectiles.Stun s = col.gameObject.GetComponent <Weapons.Projectiles.Stun>();
     if (s != null)
     {
         Stun = true;
     }
     OnTriggerEnterAI(col);
 }
コード例 #16
0
ファイル: Action.cs プロジェクト: professorlust/CardNinjas
        protected void spawnObjectUsingPrefabAsModel(int damage, int distance, float deathTime, bool piercing, Util.Enums.Direction direction, float speed, int timesCanPierce, bool isFlying, Grid.GridNode spawnPosition, Player.Character actor, bool changeMaterial = false)
        {
            Weapons.Hitbox temp  = MonoBehaviour.Instantiate(hitbox);
            GameObject     model = MonoBehaviour.Instantiate(prefab);

            if (actor.Direction == Util.Enums.Direction.Left)
            {
                model.transform.localScale = new Vector3(model.transform.localScale.x, -model.transform.localScale.y, model.transform.localScale.z);
            }
            model.transform.parent = temp.transform;
            temp.Damage            = damage;
            temp.Distance          = distance == 0 ? 1 : distance;
            temp.DeathTime         = deathTime;
            temp.Piercing          = piercing;
            temp.Direction         = direction;
            temp.Speed             = speed;
            temp.TimesCanPierce    = timesCanPierce;
            temp.IsFlying          = isFlying;
            temp.Owner             = actor.gameObject;
            temp.Element           = element;
            Util.AddElement.AddElementByEnum(temp.gameObject, element, changeMaterial);
            temp.CurrentNode        = spawnPosition;
            temp.transform.position = spawnPosition.transform.position;
        }
コード例 #17
0
 public Card(string name, string type, int range, int damage, string actionType, Weapons.Hitbox actionHitBox, string description, Sprite image)
 {
     this.name = name;
     SetType(type);
     SetAction(actionType, range, damage, actionHitBox);
     this.description = description;
     this.image       = image;
 }
コード例 #18
0
ファイル: Player.cs プロジェクト: professorlust/CardNinjas
 void OnTriggerEnter(Collider col)
 {
     Weapons.Hitbox hitbox = col.gameObject.GetComponent <Weapons.Hitbox>();
     if (hitbox != null && !invun)
     {
         if (hitbox.Owner == this.gameObject)
         {
             return;
         }
         if (hitbox.GetType() == typeof(Weapons.Projectiles.Tornado))
         {
             if (hitbox.Direction == Enums.Direction.Left)
             {
                 if (currentNode.panelAllowed(Util.Enums.Direction.Left, Type))
                 {
                     currentNode        = currentNode.Left;
                     transform.position = CurrentNode.transform.position;
                 }
                 else
                 {
                     if (currentNode.panelAllowed(Util.Enums.Direction.Up, Type))
                     {
                         currentNode        = currentNode.Up;
                         transform.position = CurrentNode.transform.position;
                         hit           = true;
                         damage        = hitbox.Damage;
                         damageElement = hitbox.Element;
                     }
                     else if (currentNode.panelAllowed(Util.Enums.Direction.Down, Type))
                     {
                         currentNode        = currentNode.Down;
                         transform.position = CurrentNode.transform.position;
                         hit           = true;
                         damage        = hitbox.Damage;
                         damageElement = hitbox.Element;
                     }
                 }
             }
             else
             {
                 if (currentNode.panelAllowed(Util.Enums.Direction.Right, Type))
                 {
                     currentNode        = currentNode.Right;
                     transform.position = CurrentNode.transform.position;
                 }
                 else
                 {
                     if (currentNode.panelAllowed(Util.Enums.Direction.Up, Type))
                     {
                         currentNode        = currentNode.Up;
                         transform.position = CurrentNode.transform.position;
                         hit           = true;
                         damage        = hitbox.Damage;
                         damageElement = hitbox.Element;
                     }
                     else if (currentNode.panelAllowed(Util.Enums.Direction.Down, Type))
                     {
                         currentNode        = currentNode.Down;
                         transform.position = CurrentNode.transform.position;
                         hit           = true;
                         damage        = hitbox.Damage;
                         damageElement = hitbox.Element;
                     }
                 }
             }
         }
         else
         {
             hit           = true;
             damage        = hitbox.Damage;
             damageElement = hitbox.Element;
         }
     }
     Weapons.Projectiles.Stun s = col.gameObject.GetComponent <Weapons.Projectiles.Stun>();
     if (s != null)
     {
         Stun = true;
     }
 }
コード例 #19
0
ファイル: Player.cs プロジェクト: professorlust/CardNinjas
        void Update()
        {
            if (Managers.GameManager.State == Enums.GameStates.Battle && !stun)
            {
                if (paused)
                {
                    paused     = false;
                    anim.speed = animSpeed;
                }
                #region detectMove
                if (CustomInput.BoolFreshPress(CustomInput.UserInput.Up, playerNumber))
                {
                    if (currentNode.panelAllowed(Enums.Direction.Up, Type))
                    {
                        directionToMove = Enums.Direction.Up;
                        nextNode        = currentNode.Up;
                    }
                }
                else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Down, playerNumber))
                {
                    if (currentNode.panelAllowed(Enums.Direction.Down, Type))
                    {
                        directionToMove = Enums.Direction.Down;
                        nextNode        = currentNode.Down;
                    }
                }
                else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Left, playerNumber))
                {
                    if (currentNode.panelAllowed(Enums.Direction.Left, Type))
                    {
                        directionToMove = Enums.Direction.Left;
                        nextNode        = currentNode.Left;
                    }
                }
                else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Right, playerNumber))
                {
                    if (currentNode.panelAllowed(Enums.Direction.Right, Type))
                    {
                        directionToMove = Enums.Direction.Right;
                        nextNode        = currentNode.Right;
                    }
                }
                else
                {
                    directionToMove = Enums.Direction.None;
                }
                #endregion
                //get next state
                currState = machine.update(hit, animDone, directionToMove, hand.GetCurrentType(), hand.Empty(), playerNumber);

                //state clean up
                if (prevState != currState)
                {
                    doOnce      = false;
                    animDone    = false;
                    attack      = false;
                    basicAttack = false;
                    move        = false;
                    hit         = false;
                    if (weapon != null)
                    {
                        Destroy(weapon);
                    }
                    anim.SetInteger("state", (int)currState);
                }
                if (invunTimer > 0)
                {
                    if (renderTimer > renderTime)
                    {
                        render      = !render;
                        renderTimer = 0;
                        foreach (SkinnedMeshRenderer b in body)
                        {
                            b.enabled = render;
                        }
                    }
                    hit          = false;
                    renderTimer += Time.deltaTime;
                    invunTimer  -= Time.deltaTime;
                }
                else if (!render || invun)
                {
                    render = true;
                    foreach (SkinnedMeshRenderer b in body)
                    {
                        b.enabled = true;
                    }
                    invun = false;
                }

                //run state
                switch (currState)
                {
                case Enums.PlayerState.Idle: Idle(); break;

                case Enums.PlayerState.MoveBegining: MoveBegining(); break;

                case Enums.PlayerState.MoveEnding: MoveEnding(); break;

                case Enums.PlayerState.Hit: Hit(); break;

                case Enums.PlayerState.Dead: Dead(); break;

                case Enums.PlayerState.BasicAttack: BasicAttack(); break;

                case Enums.PlayerState.HoriSwingMid: CardAnim(); break;

                case Enums.PlayerState.VertiSwingHeavy: CardAnim(); break;

                case Enums.PlayerState.ThrowLight: CardAnim(); break;

                case Enums.PlayerState.ThrowMid: CardAnim(); break;

                case Enums.PlayerState.Shoot: CardAnim(); break;

                case Enums.PlayerState.ChiAttack: CardAnim(); break;

                case Enums.PlayerState.ChiStationary: CardAnim(); break;

                case Enums.PlayerState.TauntGokuStretch: Taunt(); break;

                case Enums.PlayerState.TauntPointPoint: Taunt(); break;

                case Enums.PlayerState.TauntThumbsDown: Taunt(); break;

                case Enums.PlayerState.TauntWrasslemania: Taunt(); break;

                case Enums.PlayerState.TauntYaMoves: Taunt(); break;
                }

                if (move)
                {
                    move = false;
                    currentNode.clearOccupied();
                    currentNode        = nextNode;
                    currentNode.Owner  = (this);
                    transform.position = currentNode.transform.position;
                }
                #region useCard
                if (useCard)
                {
                    if (!hand.Empty())
                    {
                        Enums.CardTypes type = hand.GetCurrentType();
                        if (type == Enums.CardTypes.SwordHori || type == Enums.CardTypes.SwordVert)
                        {
                            weapon = Instantiate(Katana);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        if (type == Enums.CardTypes.WideSword)
                        {
                            weapon = Instantiate(WideSword);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.NaginataHori || type == Enums.CardTypes.NaginataVert)
                        {
                            weapon = Instantiate(Naginata);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.HammerHori || type == Enums.CardTypes.HammerVert)
                        {
                            weapon = Instantiate(Hammer);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.Fan)
                        {
                            weapon = Instantiate(Fan);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.Kanobo)
                        {
                            weapon = Instantiate(Kanobo);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale / .8f;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.Tanto)
                        {
                            weapon = Instantiate(Tanto);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.Wakizashi)
                        {
                            weapon = Instantiate(Wakizashi);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.Tonfa)
                        {
                            weapon = Instantiate(Tonfa);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale / .8f;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        else if (type == Enums.CardTypes.BoStaff)
                        {
                            weapon = Instantiate(BoStaff);
                            weapon.transform.position         = weaponPoint.position;
                            weapon.transform.localScale       = weaponPoint.localScale / .5f;
                            weapon.transform.parent           = weaponPoint;
                            weapon.transform.localEulerAngles = new Vector3(0, 0, 0);
                        }
                        int sfxNumber = 0;
                        switch (type)
                        {
                        case Enums.CardTypes.SwordVert:
                        case Enums.CardTypes.SwordHori:
                        case Enums.CardTypes.WideSword:
                        case Enums.CardTypes.NaginataVert:
                        case Enums.CardTypes.NaginataHori:
                        case Enums.CardTypes.HammerVert:
                        case Enums.CardTypes.HammerHori:
                        case Enums.CardTypes.Fan:
                        case Enums.CardTypes.Kanobo:
                        case Enums.CardTypes.Tanto:
                        case Enums.CardTypes.Wakizashi:
                        case Enums.CardTypes.Tonfa:
                        case Enums.CardTypes.BoStaff: sfxNumber = 0; break;

                        case Enums.CardTypes.ThrowLight:
                        case Enums.CardTypes.ThrowMid:
                        case Enums.CardTypes.Shoot: sfxNumber = 2; break;

                        case Enums.CardTypes.ChiAttack:
                        case Enums.CardTypes.ChiStationary: sfxNumber = 3; break;

                        default: break;
                        }
                        sfx.PlaySong(sfxNumber);
                        useCard = false;
                        hand.UseCurrent(this, deck);
                        CardUIEvent();
                    }
                }
                #endregion

                if (basicAttack)
                {
                    basicAttack = false;
                    Weapons.Hitbox b = Instantiate(bullet);
                    AddElement.AddElementByEnum(b.gameObject, element, true);
                    b.Owner = this.gameObject;
                    b.transform.position = Direction == Enums.Direction.Left ? currentNode.Left.transform.position : currentNode.Right.transform.position;
                    b.CurrentNode        = Direction == Enums.Direction.Left ? currentNode.Left : currentNode.Right;
                    b.Direction          = Direction;
                    if (playerNumber == 2)
                    {
                        Transform model = b.transform.GetChild(0);
                        model.localScale = new Vector3(model.localScale.x, -model.localScale.y, model.localScale.z);
                    }
                    sfx.PlaySong(2);
                }

                if (damage > 0 && takeDamage)
                {
                    takeDamage = false;
                    TakeDamage(damage, damageElement);
                    damage        = 0;
                    damageElement = Enums.Element.None;
                }
                prevState = currState;
            }
            else
            {
                if (!paused)
                {
                    animSpeed  = anim.speed;
                    anim.speed = 0;
                    paused     = true;
                }
                if (stun)
                {
                    if ((stunTimer += Time.deltaTime) > stunTime)
                    {
                        stunTimer = 0f;
                        stun      = false;
                    }
                }
            }
        }
コード例 #20
0
        protected override void RunAI()
        {
            if (Attacking && mechAnima.GetCurrentAnimatorClipInfo(0).Length > 0 && mechAnima.GetCurrentAnimatorClipInfo(0)[0].clip.name.Equals("SamuraiHorizontalSlash"))
            {
                Attacking = false;
                mechAnima.SetBool("Attack", false);
            }
            if (Hop && mechAnima.GetCurrentAnimatorClipInfo(0).Length > 0 && (mechAnima.GetCurrentAnimatorClipInfo(0)[0].clip.name.Equals("MoveBegin") || (mechAnima.GetCurrentAnimatorClipInfo(0)[0].clip.name.Equals("MoveEnd"))))
            {
                Hop = false;
                mechAnima.SetBool("Hop", false);
                transform.position = currentNode.transform.position;
            }
            //We change turns each second
            turn += Time.deltaTime;
            if (!hit)
            {
                if (turn > 3f)
                {
                    mechAnima.SetBool("Hurt", false);
                    turn = 0;

                    if (currentNode.Left.Type == Util.Enums.FieldType.Blue)
                    {
                        if (!currentNode.Left.Occupied)
                        {
                            currentNode.clearOccupied();          //Say we aren't here
                            currentNode       = currentNode.Left; //Say we're there
                            currentNode.Owner = (this);           //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                        else if (currentNode.Left.Down != null && !currentNode.Left.Down.Occupied && !currentNode.Down.Occupied)
                        {
                            currentNode.clearOccupied();          //Say we aren't here
                            currentNode       = currentNode.Down; //Say we're there
                            currentNode.Owner = (this);           //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                        else if (currentNode.Left.Up != null && !currentNode.Left.Up.Occupied && !currentNode.Up.Occupied)
                        {
                            currentNode.clearOccupied();        //Say we aren't here
                            currentNode       = currentNode.Up; //Say we're there
                            currentNode.Owner = (this);         //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                    }
                    //If player is above us
                    else if (player.CurrentNode.Position.x < currentNode.Position.x)
                    {
                        //Check if we can move up.
                        if (!currentNode.Up.Occupied)
                        {
                            currentNode.clearOccupied();        //Say we aren't here
                            currentNode       = currentNode.Up; //Say we're there
                            currentNode.Owner = (this);         //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                    }
                    //If player is above us
                    else if (player.CurrentNode.Position.x > currentNode.Position.x)
                    {
                        //Check if we can move up.
                        if (!currentNode.Down.Occupied)
                        {
                            currentNode.clearOccupied();          //Say we aren't here
                            currentNode       = currentNode.Down; //Say we're there
                            currentNode.Owner = (this);           //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                    }
                    //If they are in front of us, ATTACK!.
                    else
                    {
                        AnimatorClipInfo[] temp = mechAnima.GetCurrentAnimatorClipInfo(0);
                        if (temp.Length > 0 && temp[0].clip.name.Equals("SamuraiWait1"))
                        {
                            Attacking = true;
                            mechAnima.SetBool("Attack", true);
                            sfx.PlaySong(0);
                            Weapons.Hitbox b = Instantiate(bullet).GetComponent <Weapons.Hitbox>();
                            b.transform.position = currentNode.Left.transform.position;
                            b.CurrentNode        = currentNode.Left;
                        }
                    }
                }
            }
            else
            {
                mechAnima.SetBool("Hurt", true);
                turn = 0;
            }
        }
コード例 #21
0
        protected override void RunAI()
        {
            if (Hop && mechAnima.GetCurrentAnimatorClipInfo(0).Length > 0 && (mechAnima.GetCurrentAnimatorClipInfo(0)[0].clip.name.Equals("MoveBegin") || (mechAnima.GetCurrentAnimatorClipInfo(0)[0].clip.name.Equals("MoveEnd"))))
            {
                Hop = false;
                mechAnima.SetBool("Hop", false);
                transform.position = currentNode.transform.position;
            }
            //We change turns each second
            turn += Time.deltaTime;
            if (!hit && (!Attacking && !ResetingPosition))
            {
                if (turn > 1f)
                {
                    //mechAnima.SetBool("Hop", false);

                    turn = 0;
                    //If player is above us
                    if (player.CurrentNode.Position.x < currentNode.Position.x)
                    {
                        //Check if we can move up.
                        if (!currentNode.Up.Occupied)
                        {
                            currentNode.clearOccupied();        //Say we aren't here
                            currentNode       = currentNode.Up; //Say we're there
                            currentNode.Owner = (this);         //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                    }
                    //If player is above us
                    else if (player.CurrentNode.Position.x > currentNode.Position.x)
                    {
                        //Check if we can move up.
                        if (!currentNode.Down.Occupied)
                        {
                            currentNode.clearOccupied();          //Say we aren't here
                            currentNode       = currentNode.Down; //Say we're there
                            currentNode.Owner = (this);           //Tell the place we own it.
                            mechAnima.SetBool("Hop", true);
                            Hop = true;
                        }
                    }
                    //If they are in front of us, ATTACK!.
                    else if (this.transform.position.z == currentNode.transform.position.z && this.transform.position.x == currentNode.transform.position.x)
                    {
                        AnimatorClipInfo[] temp = mechAnima.GetCurrentAnimatorClipInfo(0);
                        if (temp.Length > 0 && temp[0].clip.name.Equals("SamuraiWait1"))
                        {
                            mechAnima.SetBool("Attack", true);
                            sfx.PlaySong(0);
                            Attacking = true;
                        }
                    }
                }
            }
            else if (Attacking)
            {
                if (!mechAnima.GetBool("HoldAttack") && mechAnima.GetCurrentAnimatorClipInfo(0).Length > 0)
                {
                    if (mechAnima.GetCurrentAnimatorClipInfo(0)[0].clip.name.Equals("SamuraiStabEnter"))
                    {
                        mechAnima.SetBool("HoldAttack", true);
                        mechAnima.SetBool("Attack", false);
                    }
                }



                if ((player.transform.position.z + 2f) < this.transform.position.z)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z - 5f * Time.deltaTime);
                }
                else
                {
                    ResetingPosition = true;
                    mechAnima.SetBool("Attack", false);
                    mechAnima.SetBool("HoldAttack", false);
                    mechAnima.SetBool("WithdrawAttack", true);
                    Attacking = false;

                    Grid.GridNode t = currentNode;

                    while (t.transform.position.z >= this.transform.position.z && t.Left != null)
                    {
                        t = t.Left;
                    }

                    Weapons.Hitbox b = Instantiate(bullet).GetComponent <Weapons.Hitbox>();

                    b.transform.position = t.transform.position;
                    b.CurrentNode        = t;
                }
            }
            else if (ResetingPosition)
            {
                AnimatorClipInfo[] temp = mechAnima.GetCurrentAnimatorClipInfo(0);

                if (currentNode.transform.position.z > this.transform.position.z)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + 6f * Time.deltaTime);
                }
                else if (temp.Length > 0 && (temp[0].clip.name.Equals("SamuraiStabExit") || temp[0].clip.name.Equals(("SamuraiWait1"))))
                {
                    mechAnima.SetBool("WithdrawAttack", false);
                    ResetingPosition   = false;
                    transform.position = currentNode.transform.position;
                }
            }
            else
            {
                mechAnima.SetBool("Hurt", true);
                turn = 0;
            }
        }