void InitialAnim() { mAnim = GetComponent<Animator>(); if(mAnim != null) { Monitor[] monitors = mAnim.GetBehaviours<Monitor>(); for (int Indx = 0; Indx < monitors.Length; ++Indx) monitors [Indx].AnimationEventFunc = AnimEventHandle; CameraTypeId = Animator.StringToHash ("CameraType"); } }
public override void OnStateExit(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex) { animator.ResetTrigger("bullet"); if (l > 0.7f) { characterController.ReloadBulletComplete(); } animator.SetBool("isReloadBullet", false); var iks = animator.GetBehaviours <PlayerIK>(); for (int i = 0; i < iks.Length; i++) { iks[i].isIk = true; } }
public static IObservable <ObservableStateMachineTrigger.OnStateInfo> OnStateUpdate(this Animator animator, params int[] fullPathHashes) { var observableStateMachineTriggers = animator.GetBehaviours <ObservableStateMachineTrigger>(); if (observableStateMachineTriggers.Length <= 0 || observableStateMachineTriggers == null) { Debug.LogWarning("No ObservableStateMachineTriggers were found on " + animator.name + " animator!"); return(null); } var observableTriggers = observableStateMachineTriggers.Select(trigger => trigger.OnStateUpdateAsObservable() .Where(onStateInfo => fullPathHashes.Contains(onStateInfo.StateInfo.fullPathHash))); return(Observable.Merge(observableTriggers)); }
public static Tamana.AnimatorManager.SetBool GetSetBool(string stateName, Animator animator) { var StateMachineBehaviours = animator.GetBehaviours <Tamana.AnimatorManager.SetBool>(); for (int i = 0; i < StateMachineBehaviours.Length; i++) { if ((StateMachineBehaviours[i] as Tamana.AnimatorManager.SetBool).stateName == stateName) { return(StateMachineBehaviours[i] as Tamana.AnimatorManager.SetBool); } } Debug.Log("Message = GetSetBool return null. From = " + animator.transform.name + ", when trying to get '" + stateName + "'."); return(null); }
public static IObservable <ObservableStateMachineTrigger.OnStateMachineInfo> OnStateMachineExit(this Animator animator, int fullPathHash) { var observableStateMachineTriggers = animator.GetBehaviours <ObservableStateMachineTrigger>(); if (observableStateMachineTriggers.Length <= 0 || observableStateMachineTriggers == null) { Debug.LogWarning("No ObservableStateMachineTriggers were found on " + animator.name + " animator!"); return(null); } var observableTriggers = observableStateMachineTriggers.Select(trigger => trigger.OnStateMachineExitAsObservable() .Where(onStateMachineInfo => onStateMachineInfo.StateMachinePathHash == fullPathHash)); return(Observable.Merge(observableTriggers)); }
public override void Start() { base.Start(); _anim = GetComponent <Animator>(); if (_anim != null) { BulletExplodeBehaviour[] eabs = _anim.GetBehaviours <BulletExplodeBehaviour>(); for (var i = eabs.Length - 1; i >= 0; i--) { eabs[i].bullet = this; } } damage = 10; }
/// <summary> /// Funzione che esegue il setp della state machine /// </summary> public virtual void Setup(IContext _context) { stateMachine = GetComponent <Animator>(); context = _context; //Prendo tutti gli stati dall'animator come IState states = stateMachine.GetBehaviours <StateBase>().ToList <IState>(); //Setup di tutti gli stati for (int i = 0; i < states.Count; i++) { states[i].Setup(context, OnStateStart, OnStateEnd); states[i].OnStateComplete += HandleOnStateComplete; } }
public BehaviourManager(Animator _anim, MonsterAI _monsterAI) { anim = _anim; monsterAI = _monsterAI; behaviour = anim.GetBehaviours <GenericBehaviour> (); foreach (GenericBehaviour gb in behaviour) { gb.Initialize(this); } foreach (string s in MonsterAI.stateNames) { hashToName.Add(Animator.StringToHash(s), s); } }
private void Start() { PlayerAnimationQuitTrigger[] quitTrigger = animator.GetBehaviours <PlayerAnimationQuitTrigger>(); for (int index = 0; index < quitTrigger.Length; index++) { quitTrigger[index].Controller = controller; if (quitTrigger[index].state == State.UseLeft) { quitTrigger[index].hasStarted = leftAttackHasStarted; } else if (quitTrigger[index].state == State.UseRight) { quitTrigger[index].hasStarted = rightAttackHasStarted; } } }
protected override void OnEnableOverride() { base.OnEnableOverride(); VoxelStateMachineBehavior[] behaviors = m_animator.GetBehaviours <VoxelStateMachineBehavior>(); if (behaviors.Length == 0) { Debug.LogError("Unable to find VoxelStateMachineBehavior"); return; } for (int i = 0; i < behaviors.Length; ++i) { VoxelStateMachineBehavior behavior = behaviors[i]; behavior.SetStateEnterCallback(OnAnimatorStateEnter); } }
void Start() { List <Animator> Animators = FindObjectsOfType <Animator> ().ToList(); anim = GetComponent <Animator> (); connecters = anim.GetBehaviours <AnimatorConnector> (); foreach (AnimatorConnector c in connecters) { foreach (Animator a in Animators) { if (a.runtimeAnimatorController.name.Contains(c.anim.runtimeAnimatorController.name)) { c.anim = a; } } } }
private void Start() { mainCamera = Camera.main; isCameraNotNull = mainCamera != null; animatorStates = animator.GetBehaviours <CharacterStateTransitionListener>() .ToDictionary(listener => listener.State); var stateTransitionListener = animatorStates[CharacterAnimationState.ATTACK_1]; stateTransitionListener.OnStateEnterEvents += OnAttack1StateEnter; stateTransitionListener.OnStateExitEvents += OnAttack1StateExit; agent.updateRotation = false; agent.updatePosition = true; lastTargetPosition = targetPosition; }
protected override void Start() { base.Start(); // Disable the AIs own movement code ai.canMove = false; if (anim) { RootMotionConfigurator[] behaviourScripts = anim.GetBehaviours <RootMotionConfigurator>(); foreach (RootMotionConfigurator script in behaviourScripts) { //script.smsGoTo = this; } } }
public static void Register(Animator animator, string name, WaitForAnimatorSignal node) { var found = false; foreach (var ss in animator.GetBehaviours <SendSignal>()) { if (ss.signal == name) { found = true; ss.listeners.Add(node); } } if (!found) { Debug.LogError("Signal does not exist in animator: " + name); } }
// The unity docs (https://unity3d.com/learn/tutorials/modules/beginner/5-pre-order-beta/state-machine-behaviours) // mention that StateMachineBehaviour's should only be retrieved in the Start method // which is why we do it here public void Start() { // Animator can be null when users create GameObjects directly so in that case // Just don't bother attempting to inject the behaviour classes if (_animator != null) { var behaviours = _animator.GetBehaviours <StateMachineBehaviour>(); if (behaviours != null) { foreach (var behaviour in behaviours) { _container.Inject(behaviour); } } } }
// Start is called before the first frame update protected virtual void Start() { if (_sensorTrigger != null) { AISensor script = _sensorTrigger.GetComponent <AISensor>(); if (script) { script.parentStateMachine = this; } } // Fetch all states on this gameobject AIState[] states = GetComponents <AIState>(); //Loop through all states and add them to the state dictionary foreach (AIState state in states) { if (state != null && !_states.ContainsKey(state.GetStateType())) { // Add this state to the state dictionary _states[state.GetStateType()] = state; // For each state found in the gameobject, we setup the state's state machine. state.SetStateMachine(this); } } // Initialize current state if (_states.ContainsKey(_currentStateType)) { _currentState = _states[_currentStateType]; _currentState.OnEnterState(); } else { _currentState = null; } if (_animator) { AIStateMachineLink[] _scripts = _animator.GetBehaviours <AIStateMachineLink>(); foreach (AIStateMachineLink script in _scripts) { script.stateMachine = this; } } }
static void AddEventSMB(Animator animator, string stateName, AnimationEventType eventType, System.Action <Animator> callback, int layer) { var layerName = animator.GetLayerName(layer); var callbackSMB = animator.GetBehaviours(Animator.StringToHash(layerName + "." + stateName), 0); bool found = false; foreach (var smb in callbackSMB) { CallbackSMB clbk = smb as CallbackSMB; if (clbk.GetType() != typeof(CallbackSMB)) { continue; } found = true; switch (eventType) { case AnimationEventType.STATE_ENTER: clbk.enterAction += callback; break; case AnimationEventType.STATE_END: clbk.exitAction += callback; break; case AnimationEventType.STATE_ENTER_TRANSITION_END: clbk.startTransition += callback; break; case AnimationEventType.STATE_EXIT_TRANSITION_START: clbk.exitTransition += callback; break; default: break; } } if (!found) { Debug.LogError("This animator does not have a state called " + stateName, animator); } }
private void InitBehaviours() { stateBehaviours = new Dictionary <int, StateMachineBehaviourFix>(); machineBehaviours = new Dictionary <int, StateMachineBehaviourFix>(); var allBehaviours = animator.GetBehaviours <StateMachineBehaviourFix>(); for (int i = 0; i < allBehaviours.Length; i++) { if (allBehaviours[i].attachedToStateMachine) { machineBehaviours[allBehaviours[i].stateHash] = allBehaviours[i]; } else { stateBehaviours[allBehaviours[i].stateHash] = allBehaviours[i]; } } }
public override void InstallBindings() { Container.Bind <IUnit>().WithId("Unit To Control").FromInstance(UnitToControl); if (UnitStateMachine == null) { return; } UnitStateMachine.Rebind(); foreach (var behaviour in UnitStateMachine.GetBehaviours <StateMachineBehaviour>()) { Container.Rebind(behaviour.GetType()).FromInstance(behaviour); Container.QueueForInject(behaviour); } }
public void Init(GameManager _gm) { gameSM = GetComponent <Animator>(); gameMng = _gm; context = new GameSMContext(gameMng, HandleGoToLevelCallback, HandleGoToOutcomeCallback, HandleGoToMenuCallback); foreach (StateMachineBehaviour state in gameSM.GetBehaviours <StateMachineBehaviour>()) { IState newstate = state as IState; if (newstate != null) { newstate.Setup(context); } } gameSM.SetTrigger("StartSM"); }
void Start() { // Recupera la camera _camera = GetComponent <Camera> (); // Recupera l'animator _animator = GetComponent <Animator> (); // Recupera la lista di behaviour di tipo "SentinelBehaviour" dall'animator... SentinelBehaviour[] behaviours = _animator.GetBehaviours <SentinelBehaviour> (); foreach (SentinelBehaviour behaviour in behaviours) { // ...e gli assegna i dati dello scriptable object behaviour.Data = data; } // Se il bersaglio non è stato assegnato, lo cerca in scena if (target == null) { target = GameObject.FindGameObjectWithTag("Player").transform; } // Recupera il collider del bersaglio _targetCollider = target.GetComponent <Collider> (); // Inizializzo la lista dei bersagli _targetPoints = new List <Transform> (); // Recupero tutti i gameobjects taggati "PlayerTarget" // all'interno del bersaglio Transform[] list = target.GetComponentsInChildren <Transform> (); foreach (Transform t in list) { if (t.gameObject.tag == "PlayerTarget") { _targetPoints.Add(t); } } // Se non è stato trovato nessun elemento taggato, // aggiungo il bersaglio, in modo da averne almeno uno if (_targetPoints.Count == 0) { _targetPoints.Add(target); } }
private void Awake() { Init(); #region StateMachine and Initialization if (SceneManager.GetActiveScene().name == "Menu") { SMController = FindObjectOfType <Animator>().GetComponent <Animator>(); StateBehaviourBase.Context context = new StateBehaviourBase.Context() { SetupDone = false, id = 1, }; foreach (StateBehaviourBase state in SMController.GetBehaviours <StateBehaviourBase>()) { state.Setup(context); } } //else { // Setup(); // EnemyManager[] enemies = GameObject.FindObjectsOfType<EnemyManager>() as EnemyManager[]; // m_enemies = enemies.ToList(); // EnemyMover[] enemiesMovers = GameObject.FindObjectsOfType<EnemyMover>() as EnemyMover[]; // m_enemiesMovers = enemiesMovers.ToList(); // MovableObject[] movableObjects = GameObject.FindObjectsOfType<MovableObject>() as MovableObject[]; // m_movableObjects = movableObjects.ToList(); // Armor[] armors = GameObject.FindObjectsOfType<Armor>() as Armor[]; // m_armors = armors.ToList(); // Sword[] swords = GameObject.FindObjectsOfType<Sword>() as Sword[]; // m_sword = swords.ToList(); // //directionToMove = new Vector3(0f, 0f, Board.spacing); //} #endregion _isGameplay = false; }
private void Awake() { Npc = gameObject; Agent = GetComponent <NavMeshAgent>(); animator = GetComponent <Animator>(); healthComponent = GetComponent <HealthComponent>(); itemsToDropComponent = GetComponent <ItemsToDropComponent>(); players = FindObjectsOfType <PlayerCombatController>(); healthComponent.SetValue(stats.maxHealth); healthComponent.OnDepletedCallback += Die; Agent.speed = stats.movementSpeed; foreach (NPCBaseFSM fsm in animator.GetBehaviours <NPCBaseFSM>()) { fsm.NPCScript = this; } }
private void OnEnable() { if (!animator || !playerStats) { playerStats = GetComponent <CharacterStats>(); animator = GetComponent <Animator>(); animator.SetFloat("AttackSpeed", AttackAnimationSpeed); attacksBehaviors = animator.GetBehaviours <ComboAttacks>(); } for (int i = 0; i < attacksBehaviors.Length; i++) { attacksBehaviors[i].AttackStartedHandler += AttackStarted; attacksBehaviors[i].AttackEndedHandler += AttackEnded; } playerStats.CharacterDamagedEventHandler += Damaged; //playerStats.CharacterDieEventHandler += Damaged; }
public static void Register(Animator animator, string name, IReceiveAnimatorSignal node) { var behaviours = animator.GetBehaviours <SendSignal>(); var found = false; for (var i = 0; i < behaviours.Length; i++) { var s = behaviours[i]; if (s.signal == name) { s.listeners.Add(node); found = true; } } if (!found) { Debug.LogWarningFormat("Could not find a SendSignal ({0}) behaviour.", name); } }
void Start() { Animator animator = GetComponent <Animator>(); if (animator != null) { triggers = animator.GetBehaviours <ObservableStateMachineTrigger>(); foreach (ObservableStateMachineTrigger trigger in triggers) { trigger.OnStateEnterAsObservable() .Subscribe(x => { Debug.LogFormat("state name:{0} nameHash:{1} layerIndex:{2}", x.Animator.name, x.StateInfo.shortNameHash, x.LayerIndex); }) .AddTo(this.gameObject); } } }
private void Awake() { foreach (var bav in _animator.GetBehaviours <LobbyCharacterAnimBehaviour>()) { bav.SetExitAction(OnExitAnimState); } _boneDic.Add(AccessorieType.Hat, "Character_Head"); _animDic.Add(AnimType.Angry, 2); _animDic.Add(AnimType.Idle, 1); _animDic.Add(AnimType.Jump, 2); _animDic.Add(AnimType.Dance, 1); _animDic.Add(AnimType.Run, 1); _animDic.Add(AnimType.Victory, 1); _animDic.Add(AnimType.Knock, 1); _animDic.Add(AnimType.Frustrate, 1); }
// // Initialization // void Awake() { if (!avatar) { avatar = gameObject; } animator = avatar.GetComponent <Animator>(); // Get animator state machine behaviors (allows us to get animator events) AvatarGestureStateBehavior[] behaviors = animator.GetBehaviours <AvatarGestureStateBehavior>(); foreach (var behavior in behaviors) { if (behavior.layerName == ANIM_RARM_LAYERNAME) { rarmStateBehavior = behavior; } else if (behavior.layerName == ANIM_LARM_LAYERNAME) { larmStateBehavior = behavior; } else if (behavior.layerName == ANIM_HEAD_LAYERNAME) { headStateBehavior = behavior; } } Debug.Assert(rarmStateBehavior != null && larmStateBehavior != null); // Attach event handlers to state machine behavior rarmStateBehavior.AnimationStart += StateMachineBehavior_AnimationStart; rarmStateBehavior.AnimationEnd += StateMachineBehavior_AnimationEnd; larmStateBehavior.AnimationStart += StateMachineBehavior_AnimationStart; larmStateBehavior.AnimationEnd += StateMachineBehavior_AnimationEnd; headStateBehavior.AnimationStart += StateMachineBehavior_AnimationStart; headStateBehavior.AnimationEnd += StateMachineBehavior_AnimationEnd; // Default to RArm currentStateBehavior = rarmStateBehavior; // TODO -- could elect to dynamically subscribe/unsubscribe to behaviors as needed instead of checking them each time }
protected virtual void Start() { if (_sensorTrigger != null) { AISensor sensor = _sensorTrigger.GetComponent <AISensor>(); if (sensor != null) { //Debug.Log("Setting Sensor Trigger"); sensor.parentStateMachine = this; } } AIState[] states = GetComponents <AIState>(); foreach (AIState aiState in states) { if (aiState != null && !_states.ContainsKey(aiState.GetStateType())) { _states.Add(aiState.GetStateType(), aiState); aiState.SetStateMachine(this); } } if (_states.ContainsKey(_currentStateType)) { _currentState = _states[_currentStateType]; _currentState.OnEnterState(); } else { _currentState = null; Debug.LogErrorFormat("Wrong State Type : " + _currentStateType); } if (_animator != null) { AIStateMachineLink[] scripts = _animator.GetBehaviours <AIStateMachineLink>(); foreach (AIStateMachineLink link in scripts) { link.stateMachine = this; } } }
protected virtual void Start() { if (_sensorTrigger != null) { AISensor script = _sensorTrigger.GetComponent <AISensor>(); if (script != null) { script.parentStateMachine = this; } } AIState[] states = GetComponents <AIState>(); foreach (AIState state in states) { if (state != null && !_states.ContainsKey(state.GetStateType())) { _states[state.GetStateType()] = state; state.SetStateMachine(this); } } if (_states.ContainsKey(_currentStateType)) { _currentState = _states[_currentStateType]; _currentState.OnEnterState(); } else { _currentState = null; } if (_animator) { AIStateMachineLink[] scripts = _animator.GetBehaviours <AIStateMachineLink>(); foreach (AIStateMachineLink script in scripts) { script.stateMachine = this; } } }
protected virtual void Start() { if (_sensorColiiderTrigger != null) { AISensor script = _sensorColiiderTrigger.GetComponent <AISensor>(); if (script != null) { script.SetAIStateMachine(this); } } AIState[] states = GetComponents <AIState>(); //我们在怪物本身上挂载,多个【AIState】来分别控制。 foreach (AIState state in states) { if (state != null && !_states.ContainsKey(state.GetStateType())) { _states.Add(state.GetStateType(), state); state.SetAIStateMachine(this); } } if (_states.ContainsKey(_currentStateType)) { _currentState = _states[_currentStateType]; _currentState.OnEnterState(); } else { _currentState = null; } // 获取从动画器派生的所有AIStateMachineLink行为, // 并将它们的状态机引用设置为该状态机. if (_anim) { AIStateMachineLink[] scripts = _anim.GetBehaviours <AIStateMachineLink>(); foreach (AIStateMachineLink script in scripts) { script.stateMachine = this; } } }
void Awake() { // Find a reference to the Animator component in Awake since it exists in the scene. animator = GetComponent <Animator> (); if (animator) { CreatureStateMachineBehavior[] all_behaviors = animator.GetBehaviours<CreatureStateMachineBehavior>(); for(int i=0;i<all_behaviors.Length;i++) { all_behaviors[i].game_controller = this; } } }
void Start() { animator = GetComponent<Animator>(); foreach(SlidingDoorStateBehaviour behaviour in animator.GetBehaviours<SlidingDoorStateBehaviour>()) { behaviour.AddListener(this); } for(int i=0; i<floorPositions.Length; i++) { floorPositions[i].y = floorPositions[0].y + i * GameController.floorHeight; } currentTargetFloor = currentFloor; positionDriver = new TransformAnimator(); targetFloors = 0; transform.position = GetFloorPosition(currentFloor); }
void Start () { // fighter is the model, fighterAnimator is the animation controller, we need access to it here in order // to set the correct bools that trigger different animation states fighterAnimator = fighter.GetComponent<Animator> (); // Capture the animation behaviors that underlie each state. animatedBehaviours = fighterAnimator.GetBehaviours<BufferedStateMachineBehaviour>(); UnityEngine.Debug.Log ("PWD: " + Directory.GetParent(Directory.GetCurrentDirectory()).FullName); health = 1000.0f; // Debug for animation maxHealth = health; gravity = 0.05f; initialJumpVelocity = .61f; blockPercentage = 1.0f; reach = 0.0f; attackDamage = 0.0f; lowAttack = false; inputHold = false; attackWasThrown = false; attackWasFinished = false; attackHit = false; blocking = false; lowBlocking = false; GameObject MIObj = GameObject.Find ("Info"); MenuInfo MI_gd = MIObj.GetComponent<MenuInfo> (); if (player1) { if (MI_gd.isp1AI ()) { setPlayerAI (); } playerBodyBox = GameObject.Find ("Player1BodyBox"); playerHitBox = GameObject.Find ("Player1HitBox"); playerBlockBox = GameObject.Find ("Player1BlockBox"); if (isAI) { int inPort = 4998; playerAI = new AI (inPort, inPort + 1); playerAI.verifyNetwork (); } else { Up = KeyCode.W; Down = KeyCode.S; Left = KeyCode.A; Right = KeyCode.D; Run = KeyCode.LeftShift; Attack1 = KeyCode.Q; Attack2 = KeyCode.E; Block = KeyCode.F; } } else { // player 2 if (MI_gd.isp2AI ()) { setPlayerAI (); } playerBodyBox = GameObject.Find ("Player2BodyBox"); playerHitBox = GameObject.Find ("Player2HitBox"); playerBlockBox = GameObject.Find ("Player2BlockBox"); if (isAI){ int inPort = 5998; playerAI = new AI (inPort, inPort + 1); playerAI.verifyNetwork (); } else { Up = KeyCode.I; Down = KeyCode.K; Left = KeyCode.J; Right = KeyCode.L; Run = KeyCode.RightShift; Attack1 = KeyCode.U; Attack2 = KeyCode.O; Block = KeyCode.H; } } }
void InitialAnim() { mAnim = GetComponent<Animator>(); Monitor[] monitors = mAnim.GetBehaviours<Monitor>(); for (int Indx = 0; Indx < monitors.Length; ++Indx) monitors [Indx].AnimationEventFunc = AnimEventHandle; AttackTypeId = Animator.StringToHash ("AttackType"); ActionTypeId = Animator.StringToHash ("ActionType"); triggerActionId = Animator.StringToHash ("triggerAction"); }