public BTLoop(BTNode _parentNode, BTPrecondition _precondition = null, int _loopCount = INFINITELOOP) : base(_parentNode, _precondition) { loopCount = _loopCount; mCurrentCount = 0; maxChild = 1; }
public Shoot(GameObject bullet, Transform shooter, Vector2 direct, int id = -1, BTPrecondition precondition = null) : base(precondition) { m_BulletObject = bullet; m_shooter = shooter; m_direct = direct; m_timeWaitId = id; }
public BTPreconditionNOT(BTPrecondition _precondition) { if (_precondition == null) { Debugger.Log("BTreeNodePreconditionNOT is null"); } mPrecondition = _precondition; }
public Move(float speed, Vector2 direct, Vector3 posStart, float distanceX, float distanceY, int id = -1, BTPrecondition precondition = null, bool allowChangeDirect = false) : base(precondition) { m_Speed = speed; m_Direct = direct; m_posStart = posStart; m_MaxDistanceX = distanceX; m_MaxDistanceY = distanceY; m_directID = id; m_allowChangeDirect = allowChangeDirect; }
public BTAction(BTPrecondition precondition = null) : base(precondition) { }
public MonsterWait(BTPrecondition precondition = null) : base(precondition) { }
public BTSequence(BTPrecondition preCondition) : base(preCondition) { }
public FindToTargetDestination(string targetName, string destinationDataName, float minDistance, BTPrecondition precondition = null) : base(targetName, destinationDataName, precondition) { _minDistance = minDistance; }
public FindTargetDestination(string targetName, string destinationDataName, BTPrecondition precondition = null) : base(precondition) { _targetName = targetName; _destinationDataName = destinationDataName; }
public MonsterMeleeAttack(int atk, BTPrecondition precondition = null) : base(atk, precondition) { }
/// <summary> /// 怪物朝目的地转向 /// </summary> /// <param name="targetName">目的地的string值</param> /// <param name="precondition">执行条件</param> public MonsterRotateToTarget(string targetName, BTPrecondition precondition = null) : base(precondition) { locationName = targetName; isFirstEnter = true; }
BTPrecondition DrawPrecondition(BTPrecondition _condition, int _space, ref int index) { index = index + 1; BTPrecondition result = null; if (_condition == null) { GUILayout.BeginHorizontal(); GUILayout.Space(_space); mPrecondition[index] = EditorGUILayout.ObjectField("", mPrecondition[index], typeof(MonoScript), false); if (mPrecondition[index] != null) { Type type = GetPreconditionType(mPrecondition[index].name); if (type == null) { mPrecondition[index] = null; return(_condition); } result = (BTPrecondition)type.GetConstructor(new Type[] { }).Invoke(new object[] { }); } GUILayout.EndHorizontal(); } else { mPrecondition[index] = null; GUILayout.BeginHorizontal(); GUILayout.Space(_space); string[] scripts = AssetDatabase.FindAssets("t:Script " + _condition.GetType().Name); if (scripts.Length > 0) { string path = AssetDatabase.GUIDToAssetPath(scripts[0]); MonoScript monoScript = (MonoScript)AssetDatabase.LoadAssetAtPath(path, typeof(MonoScript)); var obj = EditorGUILayout.ObjectField("", monoScript, typeof(MonoScript), false); if (obj != null) { Type type = GetPreconditionType(obj.name); if (type == null) { return(_condition); } result = (BTPrecondition)type.GetConstructor(new Type[] { }).Invoke(new object[] { }); } else { result = null; } } GUILayout.EndHorizontal(); _space = _space + SPACEDETLE; BTPrecondition _lastPreCondition = _condition; if (result is BTPreconditionAND) { GUILayout.BeginHorizontal(); GUILayout.Space(_space); int childCount = 0; if (_lastPreCondition is BTPreconditionAND) { BTPreconditionAND _lastCondAND = (BTPreconditionAND)_lastPreCondition; childCount = _lastCondAND.GetChildPreconditionCount(); } var val = EditorGUILayout.IntField(childCount); GUILayout.EndHorizontal(); if (_lastPreCondition is BTPreconditionAND) { BTPreconditionAND _lastCondAND = (BTPreconditionAND)_lastPreCondition; BTPrecondition[] childPreconditions = new BTPrecondition[val]; BTPrecondition[] curChildPreconditions = _lastCondAND.GetChildPrecondition(); for (int i = 0; i < val; i++) { BTPrecondition _cond = null; if (curChildPreconditions.Length >= i + 1) { _cond = curChildPreconditions[i]; } childPreconditions[i] = DrawPrecondition(_cond, _space, ref index); } ((BTPreconditionAND)result).SetChildPrecondition(childPreconditions); } else { BTPrecondition[] childPreconditions = new BTPrecondition[val]; for (int i = 0; i < val; i++) { childPreconditions[i] = DrawPrecondition(null, _space, ref index); } ((BTPreconditionAND)result).SetChildPrecondition(childPreconditions); } } else if (result is BTPreconditionOR) { GUILayout.BeginHorizontal(); GUILayout.Space(_space); int childCount = 0; if (_lastPreCondition is BTPreconditionOR) { BTPreconditionOR _lastCondOR = (BTPreconditionOR)_lastPreCondition; childCount = _lastCondOR.GetChildPreconditionCount(); } var val = EditorGUILayout.IntField(childCount); GUILayout.EndHorizontal(); if (_lastPreCondition is BTPreconditionOR) { BTPreconditionOR _lastCondOR = (BTPreconditionOR)_lastPreCondition; BTPrecondition[] childPreconditions = new BTPrecondition[val]; BTPrecondition[] curChildPreconditions = _lastCondOR.GetChildPrecondition(); for (int i = 0; i < val; i++) { BTPrecondition _cond = null; if (curChildPreconditions.Length >= i + 1) { _cond = curChildPreconditions[i]; } childPreconditions[i] = DrawPrecondition(_cond, _space, ref index); } ((BTPreconditionOR)result).SetChildPrecondition(childPreconditions); } else { BTPrecondition[] childPreconditions = new BTPrecondition[val]; for (int i = 0; i < val; i++) { childPreconditions[i] = DrawPrecondition(null, _space, ref index); } ((BTPreconditionOR)result).SetChildPrecondition(childPreconditions); } } else if (result is BTPreconditionNOT) { BTPrecondition curChildPreconditions = null; if (_lastPreCondition is BTPreconditionNOT) { BTPreconditionNOT _lastCondNOT = (BTPreconditionNOT)_lastPreCondition; curChildPreconditions = _lastCondNOT.GetChildPrecondition(); } curChildPreconditions = DrawPrecondition(curChildPreconditions, _space, ref index); ((BTPreconditionNOT)result).SetChildPrecondition(curChildPreconditions); } } return(result); }
private float attackDistance; // 攻击距离 /// <summary> /// 到玩家位置应该走的目的地 /// </summary> /// <param name="targetName">玩家的gameobject名称</param> /// <param name="playerLocation">在数据库中玩家当前位置的string</param> /// <param name="destinationName">在数据库中距离的string</param> /// <param name="minDistance">攻击距离</param> /// <param name="precondition">进入该状态的条件</param> public MonsterFindToTargetDestination(string targetName, string playerLocation, string destinationName, float minDistance, BTPrecondition precondition = null) : base(precondition) { playerName = targetName; destinationDataName = destinationName; attackDistance = minDistance; playerLocationName = playerLocation; }
public BTRandomSelector(BTNode _parentNode, BTPrecondition _precondition = null, int _seed = DEFAULT_SEED) : base(_parentNode, _precondition) { seed = _seed; mRandom = new System.Random(seed); }
public PlayAnimation(string animationName, BTPrecondition precondition = null) : base(precondition) { _animationName = animationName; }
/// <summary> /// 构造器 /// </summary> /// <param name="precondition">运行该节点的条件</param> public BTNode(BTPrecondition precondition) { this.precondition = precondition; }
protected BTNode(BTPrecondition preCondition) { _preCondition = preCondition; }
private BTNode activeChild; // 当前激活的孩子节点 public BTPrioritySelector(BTPrecondition precondition = null) : base(precondition) { }
protected bool isFirstEnter; // 是否是第一次攻击 public MonsterAttack(int atk, BTPrecondition precondition = null) : base(precondition) { ATK = atk; isFirstEnter = true; }
public BTParallel(BTPrecondition preCondition) : base(preCondition) { _results = new List <BTResult>(); }
private float lastTimeEvaluated; // 上次执行时间点 public MonsterLongDistanceAttacks(int atk, BTPrecondition precondition = null) : base(atk, precondition) { }
public BTPreconditionBinary(BTPrecondition lhs, BTPrecondition rhs) : base(2) { AddChild(lhs).AddChild(rhs); }
public FindEscapeDestination(string targetName, string destinationDataName, float safeDistance, BTPrecondition precondition = null) : base(targetName, destinationDataName, precondition) { _safeDistance = safeDistance; }
public BTPreconditionUnary(BTPrecondition lhs) : base(1) { AddChild(lhs); }
public AiTestAction1(BTPrecondition precondition = null) : base(precondition) { }
public BTAction(BTNode _parentNode, BTPrecondition _precondition = null) : base(_parentNode, _precondition) { }
public BTPreconditionNot(BTPrecondition lhs, int uniqueKey) : base(lhs) { _uniqueKey = uniqueKey; }
public BTParallel(ParallelFunction func, BTPrecondition precondition) : base(precondition) { results = new List <BTResult>(); this.func = func; }
public BTPreconditionXor(BTPrecondition lhs, BTPrecondition rhs, int uniqueKey) : base(lhs, rhs) { _uniqueKey = uniqueKey; }
public BTSequence(BTNode _parentNode, BTPrecondition _precondition = null) : base(_parentNode, _precondition) { }