Ejemplo n.º 1
0
        public override void OnEnter(EntityBlackBoard blackboard)
        {
            LogEnter();

            PlaySoundEventData data = EventDataFactory.Pop <PlaySoundEventData>();

            data.sound_name = sound_name;
            data.position   = _position;

            RaiseEvent(E_EntityInTrigger.PLAY_SOUND, data);
            Finish();
        }
Ejemplo n.º 2
0
        public void _export_to_target_damage(EntityExportToTargetData data, EntityBlackBoard blackboard)
        {
            if (data == null || blackboard == null)
            {
                return;
            }
            BaseEntity entity = blackboard.entity;

            target_list = blackboard.GetValue <List <BaseEntity> >(EntityBlackBoardConst.TARGET_LIST);
            int length = target_list.Count;

            for (int i = 0; i < length; i++)
            {
                DamageHelper.ExportDamageToTarget(entity, target_list[i], 10);
                ActionLog.Log("对目标:[{0}]造成[{1}]点伤害", target_list[i].ToDes(), data.damage);
            }
            target_list.Clear();
        }
Ejemplo n.º 3
0
        public void _find_target(EntityBlackBoard blackboard, EntityFindTargetData data)
        {
            if (data == null || blackboard == null)
            {
                return;
            }

            float      angle  = data.degree / 2;
            BaseEntity entity = blackboard.entity;
            // 1.得到自身的方向和世界坐标
            Vector3 direction     = entity.EntityController.Direction;
            Vector3 worldPosition = entity.EntityController.WroldPosition;

            _targetList = blackboard.GetValue <List <BaseEntity> >(EntityBlackBoardConst.TARGET_LIST);
            int length = EntitesManager.Instance._entites.Count;

            for (int i = 0; i < length; i++)
            {
                BaseEntity tmpEntity = EntitesManager.Instance._entites[i];
                if (tmpEntity == entity)
                {
                    continue;
                }
                // 2.双方之间的距离
                float distance = MathHelper.Distance2D(tmpEntity.EntityController.WroldPosition, worldPosition);
                // 3.距离大于指定长度
                if (distance > data.radius)
                {
                    continue;
                }
                // 4.自己和目标之间的方向
                Vector3 targetDirection = tmpEntity.EntityController.WroldPosition - worldPosition;
                // 5.角度小于指定长度 敌我方向和自身的正前方之间的夹角
                float tmpAngle = MathHelper.GetAngle04(targetDirection, direction);
                if (tmpAngle > angle)
                {
                    continue;
                }
                // 添加到目标
                _targetList.Add(tmpEntity);
                ActionLog.Log("找到目标:{0}", tmpEntity.EntityController.gameObject.name);
            }
        }
Ejemplo n.º 4
0
 public override void OnUpdate(float dt, EntityBlackBoard blackboard)
 {
 }
Ejemplo n.º 5
0
 public override void OnExit(EntityBlackBoard blackboard)
 {
     LogExit();
 }
Ejemplo n.º 6
0
 public virtual void OnUpdate(float dt, EntityBlackBoard blackboard)
 {
     Finish();
 }
Ejemplo n.º 7
0
 public abstract void OnExit(EntityBlackBoard blackboard);