IEnumerator PatrolState() { currentBehaviour = BehaviourState.Patrol; agent.autoBraking = false; agent.stoppingDistance = 0; agent.speed = 2; agent.angularSpeed = 200; GotoNextPoint(); thiefAnim.SetFloat("Speed_f", agent.speed); while (currentBehaviour == BehaviourState.Patrol) { if (!agent.pathPending && agent.remainingDistance < 0.1f) { if (points[prevPoint].CompareTag("WindowPoint")) { currentCoroutine = StartCoroutine(SpyState()); } else { GotoNextPoint(); } } yield return(new WaitForEndOfFrame()); } }
public virtual TaskStatus Behave(BehaviourState state) { TaskStatus status = OnBehave(state); if (debug && !debugTypeBlacklist.Contains(GetType().Name)) { string result = "Unknown"; switch (status) { case TaskStatus.SUCCESS: result = "success"; break; case TaskStatus.FAILURE: result = "failure"; break; case TaskStatus.RUNNING: result = "running"; break; } Debug.Log("Behaving: " + GetType().Name + " - " + result); } ticks++; starting = false; if (status != TaskStatus.RUNNING) { Reset(); } return(status); }
public override NodeStatus OnBehave(BehaviourState state) { NodeStatus ret = children[currentChild].Behave(state); switch (ret) { case NodeStatus.SUCCESS: currentChild++; break; case NodeStatus.FAILURE: return(NodeStatus.FAILURE); } if (currentChild >= children.Count) { return(NodeStatus.SUCCESS); } else if (ret == NodeStatus.SUCCESS) { // if we succeeded, don't wait for the next tick to process the next child return(OnBehave(state)); } return(NodeStatus.RUNNING); }
/// <summary> /// This method places new _States inside the FSM, /// or prints an ERROR message if the state was already inside the List. /// First state added is also the initial state. /// </summary> public void AddState(BehaviourState s) { if (s == null) { Debug.LogError("FSM ERROR: Null reference is not allowed"); } // First State inserted is also the Initial state, // the state the machine is in when the simulation begins if (_States.Count == 0) { _States.Add(s); _CurState = s; _CurStateID = s.ID; _CurState.OnEnter(); return; } // Add the state to the List if it's not inside it foreach (BehaviourState state in _States) { if (state.ID == s.ID) { Debug.LogError("FSM ERROR: Impossible to add state " + s.ID.ToString() + " because state has already been added"); return; } } _States.Add(s); }
void MoveForward() { RaycastHit target; if (Physics.Raycast(transform.position, raycastDirection, 1f, wallLayer) && EnemyType != EnemyClass.Swarm) { raycastCheck = 10; isMoving = false; } if (Physics.Raycast(transform.position, raycastDirection, out target, 2.0f, enemyLayer) && EnemyType != EnemyClass.Phantom) { if (target.collider.GetComponent <EnemyAIScript>().EnemyType != EnemyClass.Swarm && EnemyType != EnemyClass.Phantom) { PrevBehaviour = BehaveState; BehaveState = BehaviourState.Bumped; } } else if (Physics.Raycast(transform.position + raycastDirection / 2, Vector3.down, raycastDistance, floorLayer) || Physics.Raycast(transform.position + raycastDirection, Vector3.down, raycastDistance, floorLayer)) { transform.Translate(Vector3.forward * speed * Time.deltaTime); if (targetPos != null) { CheckSides(); } } else { raycastCheck = 1; isMoving = false; } }
public virtual NodeStatus Update(BehaviourState State) { NodeStatus ret = OnUpdate(State); if (debug && !debugTypeBlacklist.Contains(GetType().Name)) { string result = "Unknown"; switch (ret) { case NodeStatus.SUCCESS: result = "Success"; break; case NodeStatus.FAILURE: result = "Failure"; break; case NodeStatus.RUNNING: result = "Running"; break; } Debug.Log("Behaving: " + GetType().Name + " - " + result); } ticks++; starting = false; if (ret != NodeStatus.RUNNING) { Reset(); } return(ret); }
public override TaskStatus OnBehave(BehaviourState state) { TaskStatus status = children[currentChild].Behave(state); switch (status) { case TaskStatus.SUCCESS: currentChild++; break; case TaskStatus.FAILURE: return(TaskStatus.FAILURE); } if (currentChild >= children.Count) { return(TaskStatus.SUCCESS); } else if (status == TaskStatus.SUCCESS) { return(OnBehave(state)); } return(TaskStatus.RUNNING); }
void Update() { xAxis += 1f * Time.deltaTime; yAxis += 1f * Time.deltaTime; if (PlayerShootLaser.bCanShoot && Input.GetKey(Shoot) && Camera.main.GetComponent <PlayerShootLaser> ().fShootTimer <= 0) { CurrentState = BehaviourState.Shooting; gunModel.transform.localPosition = ModelOrigin; } if (CurrentState == BehaviourState.Shooting) { gunModel.transform.Translate(new Vector3(0, 0, -0.1f), Space.Self); if (gunModel.transform.localPosition.z < -0.4f) { CurrentState = BehaviourState.Recharging; } } else if (CurrentState == BehaviourState.Recharging) { gunModel.transform.Translate(new Vector3(0, 0, 0.05f), Space.Self); if (gunModel.transform.localPosition.z >= 0) { CurrentState = BehaviourState.Other; } } else if (moveScript.bHasJumped) { fGunSineChange.z = ModelOrigin.z; fGunSineChange.x = ModelOrigin.x + Mathf.Sin(Time.realtimeSinceStartup * 0.1f) * 0.06f; fGunSineChange.y = ModelOrigin.y + Mathf.Sin(Time.realtimeSinceStartup * 0.1f) * 0.04f; gunModel.transform.localPosition = fGunSineChange; } else if (moveScript.CurrSpeed.magnitude > 0f) { fGunSineChange.z = ModelOrigin.z + Mathf.Sin(Time.realtimeSinceStartup * Mathf.Abs(moveScript.CurrSpeed.y * 0.5f)) * 0.1f; fGunSineChange.x = ModelOrigin.x + Mathf.Sin(Time.realtimeSinceStartup * Mathf.Abs(moveScript.CurrSpeed.x * 0.4f)) * 0.04f; fGunSineChange.y = ModelOrigin.y + Mathf.Sin(Time.realtimeSinceStartup * 0.2f) * 0.04f; gunModel.transform.localPosition = fGunSineChange; } else { fGunSineChange.x = ModelOrigin.x; fGunSineChange.z = ModelOrigin.z; fGunSineChange.y = ModelOrigin.y + Mathf.Sin(Time.realtimeSinceStartup * 0.2f) * 0.04f; gunModel.transform.localPosition = fGunSineChange; } transform.eulerAngles = new Vector3(parentObj.transform.eulerAngles.x + Mathf.Sin(xAxis) * 2, transform.eulerAngles.y + ((Input.GetAxis("Vertical") != 0) ? Mathf.Sin(0) * 0.5f : Mathf.Sin(0) * 0.02f), transform.eulerAngles.z); }
public virtual BehaviourState Update() { IBehaviour newBehaviour = Evaluate(); if (newBehaviour == null) { lastState = BehaviourState.Completed; return(BehaviourState.Completed); } else { if (newBehaviour != lastBehaviour) { lastBehaviour.End(); lastBehaviour = newBehaviour; return(newBehaviour.Start()); } else { lastBehaviour = newBehaviour; BehaviourState state = newBehaviour.Update(); if (state == BehaviourState.Completed) { newBehaviour.End(); } lastState = state; return(state); } } }
public override BehaviourState UpdateNodeBehaviour() { for (int i = m_SequenceLocation; i < m_ChildNodes.Count; i++) { if (!m_ChildNodes[i].FirstCallActivated) { m_ChildNodes[i].OnFirstTreeCall(); } BehaviourState nodeState = m_ChildNodes[i].UpdateNodeBehaviour(); switch (nodeState) { //if the nodeState has failed it means the node and therefore the sequence have failed case BehaviourState.Failed: Reset(); return(BehaviourState.Failed); //if the nodeState has succeeded then we move to the next node in the seqeuence case BehaviourState.Succeed: continue; //in the situation were the node is running then that means that there is still more to do in the sequence. //we need to remember the index of the current child node in the sequence so we may continue from the node and then return running. case BehaviourState.Running: m_SequenceLocation = i; return(BehaviourState.Running); } } //if we exit to this location it means that the sequence is finished and has succeeded Reset(); return(BehaviourState.Succeed); }
private void MakeDeciscion() { bool inRangeToAttack = Vector3.Distance(_agent.Target.transform.position, transform.position) < _attackDist; _curState = (BehaviourState)Random.Range(1, 3 + (inRangeToAttack ? 1 : 0)); switch (_curState) { case BehaviourState.WANDER: StartCoroutine(StartWander()); break; case BehaviourState.APPROACH: StartCoroutine(StartApproach()); break; case BehaviourState.ATTACK: StartCoroutine(StartAttack()); break; default: break; } }
public override void Stun() { StopAllCoroutines(); _agent.MovementSpeed = 0; _curState = BehaviourState.HITLOCK; _sprite.color = Color.white; }
void Start() { base.Start(); behaviour = BehaviourState.PATROL; facingRight = false; savedAccel = acceleration; }
public virtual BehaviourStatus Behave(BehaviourState state) { BehaviourStatus currentState = OnBehave(state); if (debug && !debugTypeBlacklist.Contains(GetType().Name)) { string result = "N/A"; switch (currentState) { case BehaviourStatus.SUCCESS: result = "success"; break; case BehaviourStatus.FAILURE: result = "failure"; break; case BehaviourStatus.RUNNING: result = "running"; break; } Debug.Log("Behaving: " + GetType().Name + " - " + result); } ticks++; starting = false; if (currentState != BehaviourStatus.RUNNING) { Reset(); } return(currentState); }
public override NodeStatus OnBehave(BehaviourState state) { Context context = (Context)state; Living[] livingObjects = context.me.players.GetComponentsInChildren <Living>(); Array.Sort(livingObjects, delegate(Living l1, Living l2) { float d1 = context.me.DistanceTo(l1.transform.position); float d2 = context.me.DistanceTo(l2.transform.position); return(d1.CompareTo(d2)); }); foreach (Living l in livingObjects) { if (l.gameObject != context.me.gameObject) { if (context.me.DistanceTo(l.gameObject.transform.position) > distanceThreshold) { context.enemy = null; return(NodeStatus.FAILURE); } context.enemy = l; return(NodeStatus.SUCCESS); } } context.enemy = null; return(NodeStatus.FAILURE); }
public override BehaviourStatus OnBehave(BehaviourState state) { BehaviourContext enemyContext = (BehaviourContext)state; if (!enemyContext.enemyInRange(0.5f)) { if (enemyContext.enemyAnimation.GetCurrentAnimatorStateInfo(0).IsName("attack")) { enemyContext.enemyAnimation.Play("walk"); } return(BehaviourStatus.FAILURE); } if (GameObject.FindGameObjectWithTag("Player") != null) { playerPosition = GameObject.FindGameObjectWithTag("Player").transform.position; } else { return(BehaviourStatus.SUCCESS); } enemyContext.enemyPhysics.enemyRotation(playerPosition); if (enemyContext.enemyAnimation.GetCurrentAnimatorStateInfo(0).IsName("idle") || enemyContext.enemyAnimation.GetCurrentAnimatorStateInfo(0).IsName("walk")) { enemyContext.enemyAnimation.Play("attack"); } enemyContext.enemyPhysics.enemyMovement(playerPosition, angle); return(BehaviourStatus.RUNNING); }
public void ActivateCaughtMode() { Debug.Log("CAUGHT MODE ACTIVATED"); BehaviourState = BehaviourState.Caught; Speed *= 3; timer.Stop(); }
// Start is called before the first frame update void Start() { currentState = BehaviourState.Offense; towerManager = GameObject.Find("TowerManager").GetComponent <TowerManager>(); target = GameObject.Find("Red Tower").transform.position; unitCount = GameObject.Find("MapManager").GetComponent <UnitCount>(); }
public override NodeStates OnBehave(BehaviourState state) { var retVal = Children[m_currentChild].Behave(state); switch (retVal) { case NodeStates.Success: m_currentChild++; break; case NodeStates.Failure: return(NodeStates.Failure); } if (m_currentChild >= Children.Count) { return(NodeStates.Success); } if (retVal == NodeStates.Success) { return(OnBehave(state)); } return(NodeStates.Running); }
public override NodeStatus OnBehave(BehaviourState state) { Context context = (Context)state; context.moveTarget = new Vector3(UnityEngine.Random.Range(-1024, 1024), 0, UnityEngine.Random.Range(-1024, 1024)); return(NodeStatus.SUCCESS); }
public RabbitModel(GameObject prefab, RabbitData rabbitData) { if (prefab.GetComponent <Rigidbody>() != null) { RabbitData = rabbitData; RabbitStruct = rabbitData.RabbitStruct; RabbitTransform = prefab.transform; RabbitRigidbody = prefab.GetComponent <Rigidbody>(); RabbitStartPosition = prefab.transform.position; _currentHealth = RabbitStruct.MaxHealth; _nextCoord = rabbitData.RandomNextCoord(prefab.transform, RabbitStartPosition); if (RabbitStruct.CanIdle) { _rabbitState = BehaviourState.Idling; } else { _rabbitState = BehaviourState.Roaming; } _physicsService = Services.SharedInstance.PhysicsService; } else { Debug.LogError("Invalid Rabbit prefab: no Rigidbody"); } }
IEnumerator IdleState(GameObject target) { currentBehaviour = BehaviourState.Idle; thiefAnim.SetFloat("Speed_f", 0); currentTarget = player.position; distanceTarget = agent.remainingDistance; agent.SetDestination(currentTarget); float elapsedTime = 0; while (distanceTarget <= agent.stoppingDistance && currentBehaviour == BehaviourState.Idle) { currentTarget = target.transform.position; agent.SetDestination(currentTarget); distanceTarget = agent.remainingDistance; elapsedTime += Time.deltaTime; if (elapsedTime >= 1) { StartCoroutine(EscapeState(target)); StopCoroutine(currentCoroutine); } yield return(null); } currentCoroutine = StartCoroutine(RunState(target)); }
public override NodeStatus OnBehave(BehaviourState state) { Context context = (Context)state; Heal[] heals = context.me.dynamicEntities.GetComponentsInChildren <Heal>(); if (heals.Length == 0) { context.moveTarget = null; return(NodeStatus.FAILURE); } Array.Sort(heals, delegate(Heal h1, Heal h2) { float d1 = context.me.DistanceTo(h1.transform.position); float d2 = context.me.DistanceTo(h2.transform.position); return(d1.CompareTo(d2)); }); if (context.me.DistanceTo(heals[0].transform.position) > distanceThreshold) { return(NodeStatus.FAILURE); } context.moveTarget = heals[0].transform.position; return(NodeStatus.SUCCESS); }
public override BehaviourState UpdateNodeBehaviour() { for (int i = m_SelectorIndex; i < m_ChildNodes.Count; i++) { if (!m_ChildNodes[i].FirstCallActivated) { m_ChildNodes[i].OnFirstTreeCall(); } BehaviourState nodeState = m_ChildNodes[i].UpdateNodeBehaviour(); switch (nodeState) { case BehaviourState.Failed: continue; case BehaviourState.Succeed: Reset(); return(BehaviourState.Succeed); case BehaviourState.Running: m_SelectorIndex = i; return(BehaviourState.Running); } } Reset(); return(BehaviourState.Failed); }
void Timer() { if (xMovement > 0) { xMovement = 0.04f; } else if (xMovement < 0) { xMovement = -0.04f; } tick += Time.deltaTime; if (tick >= 1) { rnd = Random.Range(0, 6); if (rnd >= 4) { xMovement = -xMovement; } if (rnd == 2) { currentState = BehaviourState.idle; } tick = 0; } }
IEnumerator DeathState() { alarmController.alarmOn = false; soundScript.Death(); currentBehaviour = BehaviourState.Die; GetComponent <NavMeshAgent>().enabled = false; GetComponent <Collider>().enabled = false; thiefAnim.SetBool("Death_b", true); foreach (GameObject obj in stolenObject) { obj.transform.position = spawnPos.position; obj.transform.parent = null; obj.GetComponent <Collider>().enabled = true; //Rigidbody rb = obj.GetComponent<Rigidbody>(); //print(rb); //rb.AddExplosionForce(3, spawnPos.position, 0.5f, 3f); } stolenObject.Clear(); yield return(new WaitForSeconds(10)); thiefAnim.SetBool("Death_b", false); yield return(null); yield return(new WaitForSeconds(thiefAnim.GetCurrentAnimatorClipInfo(0).Length)); GetComponent <NavMeshAgent>().enabled = true; StartCoroutine(EscapeState(null)); }
public override BehaviourState UpdateNodeBehaviour() { for (int i = m_SelectorIndex; i < m_ChildNodes.Count; i++) { if (!m_ChildNodes[i].FirstCallActivated) { m_ChildNodes[i].OnFirstTreeCall(); } BehaviourState nodeState = m_ChildNodes[i].UpdateNodeBehaviour(); switch (nodeState) { //if the current child node has failed then we must move onto and try the next node case BehaviourState.Failed: continue; //if the current child node has been successful then we return succeed case BehaviourState.Succeed: Reset(); return(BehaviourState.Succeed); //in the case that the child node in the selector is running we save that index so that next time we search through we start at the running index case BehaviourState.Running: m_SelectorIndex = i; return(BehaviourState.Running); } } //if we escape the loop that means that no successful node to act upon was found and therefore the selector node has failed Reset(); return(BehaviourState.Failed); }
public override NodeStatus OnBehave(BehaviourState state) { Context context = (Context)state; context.me.StopMoving(); return(NodeStatus.SUCCESS); }
void Timer() { tick += Time.deltaTime; if (tick >= tickCount) { rnd = Random.Range(0, maxRange); if (rnd == 0) { if (PlayerBody.tag == "Unstealthed" && PlayerTransform.position.x > transform.position.x + 8 || PlayerBody.tag == "Unstealthed" && PlayerTransform.position.x < transform.position.x - 8) { currentstate = BehaviourState.jumping; maxRange = 6; } else if (PlayerBody.tag == "Stealthed") { currentstate = BehaviourState.jumping; maxRange = 6; } else if (PlayerBody.tag == "Unstealthed" && PlayerTransform.position.x < transform.position.x + 8 || PlayerTransform.position.x > transform.position.x - 8) { currentstate = BehaviourState.encouraged; maxRange = 6; } } else if (rnd > 0 && rnd < 4) { maxRange--; } else if (rnd == 4 || rnd == 5) { currentstate = BehaviourState.idle; } tick = 0; } }
public override void Update(float deltaTime) { MeshObject.Rotation += deltaTime * (float)Math.PI * 0.3f; behaviourCheckTime -= deltaTime; if (behaviourCheckTime < 0f) { behaviourCheckTime = 0.2f; behaviourState = StateCheck(); } Vector3 towardsTarget = Vector3.Normalize(targetPosition - Position); if (behaviourState == BehaviourState.Chasing || behaviourState == BehaviourState.Searching) { float magnitude = Math.Min(deltaTime * Speed, PlayerStats.thickness + HitRadius); Position += Scene.SmoothMovement(Position, towardsTarget * magnitude, HitRadius, ObstacleLayerMask.GetMask(ObstacleLayer.Wall)); } if (behaviourState == BehaviourState.Chasing || behaviourState == BehaviourState.Attacking) { shootTime += deltaTime; if (shootTime > ShootSpeed && !Game.PlayerStats.dead) { shootTime = 0f; Attack(towardsTarget); } } }
public BehaviourSM(AIController owner) { this.owner = owner; stateStack = new Stack<BehaviourState>(); baseState = new Behaviour_Idle(); baseState.EnterState(owner); currentState = baseState; }
public void GotoNewState(BehaviourState newState, TransitionMode transitionMode) { BehaviourState oldState = currentState; oldState.ExitState(owner); #if VERBOSE_AI_STATES Debug.Log("AI state change: [" + oldState.GetType().Name + "] --> [" + newState.GetType().Name + "] :: <" + transitionMode + ">"); #endif switch(transitionMode) { case TransitionMode.PopPrevious: // Go back to the previous state on the stack BehaviourState nextState = stateStack.Pop(); if(nextState != null) { currentState = nextState; } else { // in case there was no state on the stack, go back to base state currentState = baseState; } break; case TransitionMode.PushCurrent: // Pushes the current state onto the stack and goes to the returned next state stateStack.Push(currentState); currentState = newState; if(currentState == null) { // If a null state was added, go back tot eh previous one currentState = stateStack.Pop(); } break; case TransitionMode.AbandonCurrent: // Go to the new state, without pushing the current one on the stack if(newState != null) { currentState = newState; } break; } currentState.EnterState(owner); }
//TODO prevent from chasing off of platform boundaries void FixedUpdate() { base.FixedUpdate(); groundInFront = Physics2D.OverlapCircle(forwardGroundCheck.position,groundCheckRadius,groundLayer); acceleration = savedAccel; savedAccel = acceleration; if((target = getTarget())) { behaviour = BehaviourState.CHASE; } else { behaviour = BehaviourState.PATROL; } if(behaviour == BehaviourState.PATROL) { if(anim != null) anim.SetBool("walking",true); if(!groundInFront && onGround) { patrolDir = -patrolDir; } travelDir = patrolDir; } else if(behaviour == BehaviourState.CHASE) { if(anim != null) anim.SetBool("walking",true); travelDir = (target.position - transform.position).normalized.x; if(!groundInFront && onGround) { if(anim != null) anim.SetBool("walking",false); acceleration = 0; //rigidbody2D.velocity = new Vector2(0,rigidbody2D.velocity.y); } } //horizontalPhysicsMovement(travelDir,movementPower); }
// Retrieves next behaviour from fuzzy logic module private void DoFuzzyLogic() { if (Target != null) { Fuzzifier fuzz = new Fuzzifier(HealthPoints / MaxHealth, (Target as Hero).HealthPoints / (Target as Hero).MaxHealth, (Position - Target.Position).Length() / MAX_DISTANCE); BehaviouralState = fuzz.GetBehaviour(); // release any reserved slot if new behaviour does not require one if (BehaviouralState != BehaviourState.MeleeCreep && BehaviouralState != BehaviourState.MeleePursue) { if (targetslot >= 0) { Target.releaseSlot(this, targetslot); } GroundTarget = new Vector3(); } // forget the target if the bew behaviour does not require one if (BehaviouralState == BehaviourState.Wander) { Target = null; } } }
public Zombie(int health, int maxHealth, ZombieType type, ref Model modelwalk, ref Model modelatt, ref Model modelhurt, ref Model modeldie, Action<Entity, Entity> attackFunction, Func<Vector3, Vector3, PathFinding.Node> astarGetter) : base() { this.astarGetter = astarGetter; this.model = modelwalk; this.HealthPoints = health; this.MaxHealth = maxHealth; this.MaxVelocity = 0.04f; this.MaxAcceleration = 0.04f; if (type == ZombieType.Boss) { this.MaxVelocity *= 2; this.MaxAcceleration *= 2; this.modelRadius *= 2; } ArriveRadius = 1; FleeRadius = 30; TimeToTarget = 0.070f; RotationTimeToTarget = 0.00025f; InterpolationSpeed = 10; TargetRotation = 0.02f; SlowRotationThreshold = (float)Math.PI; SlowRadiusThreshold = (float)Math.PI * 3; MaxRotationSpeed = (float)Math.PI / 12; MaxRotationAcceleration = (float)Math.PI; PosState = EntityPositionState.SteeringWander; OrState = EntityOrientationState.Face; BehaviouralState = BehaviourState.Wander; zombieType = type; MeleeAttack = new Weapon(WeaponType.ZombieHands); RangedAttack = new Weapon(WeaponType.Vomit); if (type == ZombieType.Boss) { MeleeAttack.FirePower *= 2; RangedAttack.FirePower *= 2; } this.AttackFunction = attackFunction; lastAttackTime = 0; // Look up our custom skinning information. for walking skinningDatawalk = (SkinningData)modelwalk.Tag; if (skinningDatawalk == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); // Create an animation player, and start decoding an animation clip. animationPlayerwalk = new AnimationPlayer(skinningDatawalk); clipwalk = skinningDatawalk.AnimationClips["Take 001"]; animationPlayerwalk.StartClip(clipwalk); // Look up our custom skinning information. for dying skinningDatadie = (SkinningData)modeldie.Tag; if (skinningDatadie == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); // Create an animation player, and start decoding an animation clip. animationPlayerdie = new AnimationPlayer(skinningDatadie); clipdie = skinningDatadie.AnimationClips["Take 001"]; animationPlayerdie.StartClip(clipdie); // Look up our custom skinning information. for attacking skinningDataattack = (SkinningData)modelatt.Tag; if (skinningDataattack == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); // Create an animation player, and start decoding an animation clip. animationPlayerattack = new AnimationPlayer(skinningDataattack); clipattack = skinningDataattack.AnimationClips["Take 001"]; animationPlayerattack.StartClip(clipattack); // Look up our custom skinning information. for hurting skinningDatahurt = (SkinningData)modelhurt.Tag; if (skinningDatahurt == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); // Create an animation player, and start decoding an animation clip. animationPlayerhurt = new AnimationPlayer(skinningDatahurt); cliphurt = skinningDatahurt.AnimationClips["Take 001"]; animationPlayerhurt.StartClip(cliphurt); }
public StateResponse(TransitionMode transitionMode, BehaviourState newState = null) { this.transitionMode = transitionMode; this.newState = newState; }
public void ResetDefault() { stateStack.Clear(); if(currentState != baseState) { currentState.ExitState(owner); } baseState = new Behaviour_Idle(); baseState.EnterState(owner); currentState = baseState; }
void Start() { base.Start (); behaviour = BehaviourState.PATROL; facingRight = false; savedAccel = acceleration; }
/// <summary> /// Sets the AI behaviour. /// </summary> /// <param name='behaviour'> /// Behaviour. /// </param> public void SetBehaviour(BehaviourState behaviour) { if (currentState != null) { currentState.Clear(); } currentState = behaviour; currentState.Start(this); }
public BehaviourComponent(GameObject parent, BehaviourTreeNode root) : base(parent) { this.State = BehaviourState.Idle; this.Root = root; }
// increases the stat with a given name by an ammount void SetCurrentState(BehaviourState _state) { currentState = _state; //lastStateChange = Time.time; ChangeStates (); }
void Start() { _ship = this.GetComponent<Ship>(); _ship.shipControllerSendDestroyed += OnShipDestroyed; currentState = new IdleState(); enabled = false; }