private void Actions_Recharging() { if (mNavMeshAgent.speed != 0f) { damagingAura.SetActive(false); rechargingParticleEffect.SetActive(true); mNavMeshAgent.acceleration = 100f; mNavMeshAgent.speed = 0f; mAnimations.Animation_Recharging(); } if (durationOfRecharge >= 0f) { //transform.LookAt(new Vector3(mTargetToFollow.position.x, transform.position.y, mTargetToFollow.position.z)); durationOfRecharge -= Time.deltaTime; } else { SetTargetToMoveTowards(); rechargingParticleEffect.SetActive(false); durationOfRecharge = savedDurationOfRecharge; mCurrentStance = TypeOfStances.Screaming; } }
/// <summary> /// What happens during the sprinting-state. /// </summary> private void Actions_Sprinting() { if (mNavMeshAgent.speed != hedgehogVariables.combatSpeed) { durationOfSprint = 3.5f; if (mNavMeshAgent.acceleration != hedgehogVariables.combatAcceleration) { mNavMeshAgent.acceleration = hedgehogVariables.combatAcceleration; } if (mNavMeshAgent.speed != hedgehogVariables.combatSpeed) { mNavMeshAgent.speed = hedgehogVariables.combatSpeed; } } float distance = (new Vector3(sprintLocationGoal.x, transform.position.y, sprintLocationGoal.z) - new Vector3(transform.position.x, transform.position.y, transform.position.z)).magnitude; if (distance < 0.1f) { mCurrentStance = TypeOfStances.Recharging; } else if (durationOfSprint > 0f) { durationOfSprint -= 1 * Time.deltaTime; } else if (durationOfSprint < 0f) { mAnimations.Animation_SetSprintState(false); mCurrentStance = TypeOfStances.Recharging; } }
/// <summary> /// What happens during the follow-state. /// </summary> private void Actions_Following() { mNavMeshAgent.SetDestination(mTargetToFollow.position); if (mNavMeshAgent.speed != hedgehogVariables.normalSpeed) { mNavMeshAgent.speed = hedgehogVariables.normalSpeed; } //Debugging if player ever LOS the target. if (!TargetInSight()) { mCurrentStance = TypeOfStances.Idle; } }
private void Actions_Searching() { if (mNavMeshAgent.destination != playerPosLastSpotted) { mNavMeshAgent.SetDestination(playerPosLastSpotted); } if (mNavMeshAgent.remainingDistance < 0.5f) { if (TargetInSight()) { mCurrentStance = TypeOfStances.Following; } else { mCurrentStance = TypeOfStances.Idle; } } }
/// <summary> /// What happens during the screaming state. /// </summary> private void Actions_Screaming() { transform.LookAt(new Vector3(mTargetToFollow.position.x, transform.position.y, mTargetToFollow.position.z)); if (!screamStarted && TargetInSight()) { mAnimations.Animation_StartScream(); mNavMeshAgent.SetDestination(transform.position); mNavMeshAgent.acceleration = 100f; mNavMeshAgent.speed = 0f; screamStarted = true; } if (durationOfScream >= 0f) { durationOfScream -= Time.deltaTime; SaveLatestPositionPlayerSpotted(mTargetToFollow.position); } else { if (TargetInSight()) { mAnimations.Animation_SetSprintState(true); screamStarted = false; damagingAura.SetActive(true); durationOfScream = savedDurationOfScream; SetTargetToMoveTowards(); //Setting target mCurrentStance = TypeOfStances.Sprinting; } else { mAnimations.Animation_SetSprintState(true); screamStarted = false; damagingAura.SetActive(true); durationOfScream = savedDurationOfScream; mNavMeshAgent.SetDestination(playerPosLastSpotted); mCurrentStance = TypeOfStances.Sprinting; } } }
private void CheckRangeOfTarget() { if (!isDying) { float distanceToTarget = (mTargetToFollow.position - transform.position).magnitude; if (distanceToTarget < hedgehogVariables.detectionRange && mCurrentStance == TypeOfStances.Idle) { if (TargetInSight()) { mCurrentStance = TypeOfStances.Following; } } else if (distanceToTarget < hedgehogVariables.combatRange && mCurrentStance == TypeOfStances.Following) { if (TargetInSight()) { mCurrentStance = TypeOfStances.Screaming; } else { mCurrentStance = TypeOfStances.Idle; mNavMeshAgent.SetDestination(playerPosLastSpotted); } } else if ((sprintLocationGoal - transform.position).magnitude < 3f && mCurrentStance == TypeOfStances.Sprinting) { mCurrentStance = TypeOfStances.Recharging; } if (mCurrentStance == TypeOfStances.Following && TargetInSight()) { SaveLatestPositionPlayerSpotted(mTargetToFollow.position); } } }
public void AnimationEvent_SetStateBackToIdle() { mCurrentStance = TypeOfStances.Idle; gotScared = false; mNavMeshAgent.speed = hedgehogVariables.normalSpeed; }
public void SetCurrentStance(TypeOfStances newStance) { mCurrentStance = newStance; }