private void FindEntityDestination()
        {
            if (ObjectDatabase.Instance.haveEntitiesChanged)
            {
                mobs = ObjectDatabase.GetAllEntities <Mob>();
                ObjectDatabase.Instance.haveEntitiesChanged = false;
            }

            foreach (var mob in mobs)
            {
                if (mob.targetEntity)
                {
                    Debug.Log(mob.targetEntity.Name + " " + mob.targetEntity.transform.position);
                    Vector3 targetPosition = mob.targetEntity.transform.position;
                    mob.RpcSetDestination(targetPosition.x, targetPosition.z);
                    mob.agent.SetDestination(targetPosition);
                }
                else
                {
                    Vector3 position    = mob.transform.position;
                    Vector3 destination = new Vector3(position.x + Random.Range(-20, 20), 1, position.z + Random.Range(-20, 20));
                    mob.RpcSetDestination(destination.x, destination.z);
                    mob.agent.SetDestination(destination);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get entity that is closest to the player and is in the player's attack range
        /// </summary>
        /// <returns></returns>
        public Entity GetClosestEntity()
        {
            Entity[] entities = ObjectDatabase.GetAllEntities();
            Entity   result   = null;

            float minDistance = float.MaxValue;

            foreach (Entity entity in entities)
            {
                if (entity == null || entity.transform == transform)
                {
                    continue;
                }

                float distance = Vector3.Distance(transform.position, entity.transform.position);
                if (distance <= usedWeapon.attackRange && distance < minDistance)
                {
                    result      = entity;
                    minDistance = distance;
                }
            }

            return(result);
        }