Beispiel #1
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);
            }
        }
    }
Beispiel #2
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());
                }
            }
Beispiel #3
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());
                }
            }
Beispiel #4
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;
        }
    }
Beispiel #5
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();
                }
            }