示例#1
0
        private void ChangeAttackTarget(object[] args)
        {
            if (args != null && args.Length > 0)
            {
                if (GoalbalID != Convert.ToInt32(args[0]))
                {
                    return;
                }
                var go    = (GameObject)args[1];
                var value = conditionMap.SetDictionaryValue(CondtionTag.Target, go != null);
                if (value)
                {
                    updateData.AddSortListElements(CondtionTag.Near_Target, (context) =>
                    {
                        var dis  = Vector3.Distance(context.GameObject.transform.position, go.transform.position);
                        var near = context.Parameter.ParameterList.GetSortListValue(ParameterTag.Attack_Dis);
                        if (dis < near.Value)
                        {
                            return(true);
                        }
                        return(false);
                    });
                }
                else
                {
                    updateData.RemoveSortListElements(CondtionTag.Near_Target);
                }

                OnEmitEvent(GOAPEventType.ChangeCondition, new object[] { GoalbalID, });
#if UNITY_EDITOR
                panelInfo.ForEach((panel) =>
                {
                    if (panel.ElementTag == CondtionTag.Target)
                    {
                        panel.IsRight = value;
                    }
                });
#endif
            }
        }