Ejemplo n.º 1
0
            public override void Update()
            {
                if (dodgeDistance < targetDistance)
                {
                    Vector2 dodgeVector =
                        IsometricUtility.ToIsometricVector2(warrior.RunTimeData.Direction)
                        * warrior.Property.DodgeSpeed * Time.deltaTime;

                    dodgeDistance += dodgeVector.magnitude;

                    warrior.MovementBody.MovePosition(
                        warrior.MovementBody.position + dodgeVector);
                }

                if (warrior.animationEnd)
                {
                    if (chargeState == 2)
                    {
                        actionManager.SetAction(new WarriorHeavyAttackRecovery());
                    }
                    else
                    {
                        actionManager.SetAction(new WarriorIdel());
                    }
                }
            }
Ejemplo n.º 2
0
 public override void Update()
 {
     IsometricUtility.GetVerticalAndHorizontal(
         warrior.RunTimeData.Direction, out var vertical, out var horizontal);
     warrior.CharacterAnimator.SetFloat("Vertical", vertical);
     warrior.CharacterAnimator.SetFloat("Horizontal", horizontal);
 }
Ejemplo n.º 3
0
            public override void Update()
            {
                if (!ChargeEnd)
                {
                    ChargeTime += Time.deltaTime;

                    IsometricUtility.GetVerticalAndHorizontal(
                        warrior.RunTimeData.Direction, out var vertical, out var horizontal);
                    warrior.CharacterAnimator.SetFloat("Vertical", vertical);
                    warrior.CharacterAnimator.SetFloat("Horizontal", horizontal);

                    if (!IsCharge || ChargeTime > 2.1)
                    {
                        if (ChargeTime < 0.7)
                        {
                            actionManager.SetAction(new WarriorHeavyAttack2(0));
                        }
                        else if (ChargeTime < 1.4)
                        {
                            actionManager.SetAction(new WarriorHeavyAttack2(1));
                        }
                        else
                        {
                            actionManager.SetAction(new WarriorHeavyAttack2(2));
                        }
                    }
                }
            }
Ejemplo n.º 4
0
            public override void Update()
            {
                if (IsometricUtility.ToIsometricDistance(manager.Character.transform.position,
                                                         manager.player.transform.position) > manager.AISetting.DetectedDistance)
                {
                    manager.SetState(new AIIdel());
                }

                if (pathFinded == true)
                {
                    if (IsometricUtility.ToIsometricDistance(manager.player.transform.position, manager.Character.transform.position) < manager.AISetting.AttackDistance &&
                        manager.Character.RunTimeData.BasicAttackTimer <= 0)
                    {
                        manager.SetState(new AIAttack());
                    }
                    else if (IsometricUtility.ToIsometricDistance(nextPoint, manager.Character.transform.position)
                             > manager.AISetting.StopDistance)
                    {
                        manager.Character.Move(
                            (nextPoint - manager.Character.transform.position).normalized);
                    }
                    else if (!manager.Senser.NextWayPoint(out nextPoint))
                    {
                        manager.SetState(new AIChase());
                    }
                }
                else if (pathFinded == null)
                {
                    manager.SetState(new AIIdel());
                }
            }
Ejemplo n.º 5
0
    // Update is called once per frame
    void Update()
    {
        foreach (SpwanMobData item in SpwanMobs)
        {
            item.Update();

            if (item.ReadyToSpwan() && (unvisible || SpwanWhenVisible))
            {
                item.SpwanMob();
            }
        }

        if (!isActive &&
            IsometricUtility.ToIsometricDistance(
                transform.position, player.position) <= ActiveRange)
        {
            isActive = true;
            foreach (SpwanMobData item in SpwanMobs)
            {
                item.SetActive(true);
            }
        }
        else if (isActive &&
                 IsometricUtility.ToIsometricDistance(
                     transform.position, player.position) > ActiveRange)
        {
            isActive = false;
            foreach (SpwanMobData item in SpwanMobs)
            {
                item.SetActive(false);
            }
        }
    }
Ejemplo n.º 6
0
 public override void Start()
 {
     nowDistance        = 0;
     knockBackDirection = IsometricUtility.ToIsometricVector2(
         wound.HitFrom - orcCaptain.MovementBody.position).normalized;
     orcCaptain.CharacterAnimator.SetBool("IsHurt", true);
     orcCaptain.HurtSound.Play();
 }
Ejemplo n.º 7
0
 public override void Start()
 {
     nowDistance        = 0;
     knockBackDirection = IsometricUtility.ToIsometricVector2(
         spider.MovementBody.position - damage.HitFrom).normalized;
     spider.CharacterAnimator.SetBool("IsHurt", true);
     spider.HurtSound.Play();
 }
Ejemplo n.º 8
0
 public override void Start()
 {
     spider.MoveSound.Play();
     IsometricUtility.GetVerticalAndHorizontal(
         spider.RunTimeData.Direction, out var vertical, out var horizontal);
     spider.CharacterAnimator.SetFloat("Vertical", vertical);
     spider.CharacterAnimator.SetFloat("Horizontal", horizontal);
     spider.CharacterAnimator.SetBool("IsMove", true);
 }
Ejemplo n.º 9
0
            public override void Start()
            {
                IsometricUtility.GetVerticalAndHorizontal(
                    spider.RunTimeData.Direction, out var vertical, out var horizontal);
                spider.CharacterAnimator.SetFloat("Vertical", vertical);
                spider.CharacterAnimator.SetFloat("Horizontal", horizontal);

                spider.CharacterAnimator.SetBool("IsFallDown", false);
                spider.CharacterAnimator.SetBool("IsMove", false);
            }
Ejemplo n.º 10
0
            public override void Update()
            {
                IsometricUtility.GetVerticalAndHorizontal(
                    spider.RunTimeData.Direction, out var vertical, out var horizontal);
                spider.CharacterAnimator.SetFloat("Vertical", vertical);
                spider.CharacterAnimator.SetFloat("Horizontal", horizontal);

                spider.MovementBody.MovePosition(spider.MovementBody.position +
                                                 IsometricUtility.ToIsometricVector2(spider.RunTimeData.Direction)
                                                 * spider.Property.MoveSpeed * Time.deltaTime);
            }
Ejemplo n.º 11
0
        public void Shooting(Vector3 target, DamageData damage)
        {
            MyDamage = damage;

            Vector3 endPosition = IsometricUtility.ToIsometricVector3(
                (target - transform.position).normalized * BulletRange);

            transform.DOBlendableMoveBy(endPosition, (BulletRange / BulletSpeed))
            .SetEase(BulletMoveEase)
            .onComplete += () => GetComponent <Animator>().SetTrigger("Destroy");
            hasShot      = true;
        }
Ejemplo n.º 12
0
            public override void Initial()
            {
                //Debug.Log("Wandering Start");

                pathFinded = false;
                float distance = Random.Range
                                     (manager.AISetting.WounderDistanceMin, manager.AISetting.WounderDistanceMax);
                float degree = Random.Range(0, 360);

                manager.Senser.FindPath(manager.Character.transform.position +
                                        IsometricUtility.ToIsometricVector3(
                                            Quaternion.AngleAxis(degree, Vector3.forward) * (Vector3.one * distance))
                                        , PathFinded);
            }
Ejemplo n.º 13
0
            public override void Update()
            {
                idelTimer -= Time.deltaTime;
                if (idelTimer < 0)
                {
                    manager.SetState(new AIWandering());
                }

                if (IsometricUtility.ToIsometricDistance
                        (manager.Character.transform.position, manager.player.transform.position)
                    <= manager.AISetting.DetectedDistance)
                {
                    manager.SetState(new AIChase());
                }
            }
Ejemplo n.º 14
0
        private void ShootingProjector()
        {
            #region 取得發射位置
            IsometricUtility.GetVerticalAndHorizontal(Character.RunTimeData.Direction
                                                      , out float vertical, out float horizontal);
            var positionIndex = ((int)vertical + 1) * 3 + (int)horizontal + 1;
            positionIndex = positionIndex > 4 ? positionIndex - 1 : positionIndex;
            var startPosition = ShottingPoints[positionIndex].position;
            #endregion

            var damage = SkillDamage.GetDamageData(Character.Property);
            damage.HitFrom = gameObject.gameObject.transform.position;
            Instantiate(Bullet, startPosition, Quaternion.identity)
            .GetComponent <ProjectSkillCollider>()
            .Shooting(Character.RunTimeData.TargetPosition, damage);
        }
Ejemplo n.º 15
0
            public override void Update()
            {
                Vector2 dodgeVector =
                    IsometricUtility.ToIsometricVector2(warrior.RunTimeData.Direction)
                    * warrior.Property.DodgeSpeed * Time.deltaTime;

                dodgeDistance += dodgeVector.magnitude;

                warrior.MovementBody.MovePosition(
                    warrior.MovementBody.position + dodgeVector);

                if (dodgeDistance >= targetDistance)
                {
                    actionManager.SetAction(new WarriorHeavyAttack1(isCharge));
                }
            }
Ejemplo n.º 16
0
    // Start is called before the first frame update
    void Start()
    {
        player = FindObjectOfType <PlayerController>().MyCharacter.transform;

        foreach (SpwanMobData item in SpwanMobs)
        {
            item.Start(gameObject);
        }

        if (IsometricUtility.ToIsometricDistance(
                transform.position, player.position) <= ActiveRange)
        {
            isActive = true;
        }
        else
        {
            isActive = false;
        }
    }
Ejemplo n.º 17
0
            public override void Update()
            {
                if (IsometricUtility.ToIsometricDistance(manager.Character.transform.position,
                                                         manager.player.transform.position) > manager.AISetting.DetectedDistance)
                {
                    manager.SetState(new AIIdel());
                }

                if (IsometricUtility.ToIsometricDistance(manager.player.transform.position,
                                                         manager.Character.transform.position) > manager.AISetting.AttackDistance)
                {
                    manager.SetState(new AIChase());
                }

                if (manager.Character.RunTimeData.BasicAttackTimer <= 0)
                {
                    manager.Character.Move(
                        (manager.player.transform.position - manager.Character.transform.position).normalized);
                    manager.Character.BasicAttack();
                }
            }
Ejemplo n.º 18
0
            public AIAround()
            {
                wayPoints = new Queue <Vector3>();
                var firstTarget = IsometricUtility
                                  .ToIsometricVector3(manager.player.transform.position - manager.Character.transform.position)
                                  * manager.AISetting.AroundRadius;

                wayPoints.Enqueue(firstTarget);

                float angle  = Random.Range(1, 10) > 5 ? -manager.AISetting.AroundDegree : manager.AISetting.AroundDegree;
                var   rotate = Quaternion.AngleAxis(angle, manager.player.transform.position);

                for (int i = 0; i < manager.AISetting.RoundTurn; i++)
                {
                    Vector3 nextTarget = firstTarget;

                    for (int r = 0; r <= i; r++)
                    {
                        nextTarget = rotate * nextTarget;
                    }

                    wayPoints.Enqueue(nextTarget);
                }
            }