protected override GameObject Create() { IPlacementArea targetArea = (IPlacementArea)args[0]; IntVector2 destination = (IntVector2)args[1]; long id = currentTargetLevelData.monster.Id; GameObject agent = Instantiate(Resources.Load <GameObject>("Prefab/Monster/" + id), transform); Animator animator = agent.GetComponent <Animator>(); CharacterAnimator characterAnimator = GetComponentInParent <CharacterAnimator>(); AIBehaviors ai = GetComponent <AIBehaviors>(); AIAnimationStates animationStates = GetComponentInParent <AIAnimationStates>(); characterAnimator.anim = animator; PatrolState patrolState = ai.GetState <PatrolState>(); Transform[] transforms = new Transform[2]; transforms[0] = targetArea.transform; transforms[1] = targetArea.transform; patrolState.SetPatrolPoints(transforms); patrolState.GetTrigger <WithinDistanceTrigger>().center = transform; //IdleState ldleState = ai.GetState<IdleState>(); //ldleState.currentNode = targetArea.transform; //ldleState.GetTrigger<WithinDistanceTrigger>().center = targetArea.transform; AttackState attackState = ai.GetState <AttackState>(); attackState.GetTrigger <BeyondDistanceTrigger>().center = targetArea.transform; //AI //BaseState baseState = ComponentHelper.AddComponentByName(ai.transform.Find("States").gameObject, "GotHitState") as BaseState; //baseState.name = "GotHitState"; //GotHitState gotHitState = baseState as GotHitState; //gotHitState.hitStateDuration = 0; //gotHitState.returnToPreviousState = true; //gotHitState.animationStates[0] = animationStates.GetStateWithName("Hit"); //ai.AddSubTrigger(gotHitState); //初始化 UnityEngine.Object alignment = Resources.Load("Data/Alignment/TowerAlignment"); if (this.configuration.alignment == null) { this.configuration.alignment = new SerializableIAlignmentProvider(); this.configuration.alignment.unityObjectReference = alignment; } else { this.configuration.alignment.unityObjectReference = alignment; } ai.Initialize(); //放置 UpdateTargetPos(targetArea, destination); return(agent); }
void OnEnable() { styles = new AIBehaviorsStyles(); m_Object = new SerializedObject(target); animationStatesProp = m_Object.FindProperty("states"); m_AnimationStatesCount = m_Object.FindProperty(kArraySize); animStates = m_Object.targetObject as AIAnimationStates; transform = animStates.transform; InitStatesGameObject(); }
public static string[] GetAnimationStateNames(SerializedObject m_StateObject) { SerializedProperty m_animationStates = m_StateObject.FindProperty("animationStatesComponent"); AIAnimationStates animStatesComponent = m_animationStates.objectReferenceValue as AIAnimationStates; bool animStatesNull = animStatesComponent == null; int animNamesSize = animStatesNull ? 0 : animStatesComponent.states.Length; string[] animationStateNames = new string[animNamesSize]; for (int i = 0; i < animationStateNames.Length; i++) { if (animStatesComponent.states[i] != null) { animationStateNames[i] = animStatesComponent.states[i].name; } else { animationStateNames[i] = ""; } } return(animationStateNames); }