protected void SetAnimation(Enums.ManStates state) { switch (state) { case Enums.ManStates.Idle: if (!_Animator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { _Animator.SetTrigger("IdleTrigger"); } break; case Enums.ManStates.RotatingToPlayer: if (!_Animator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { _Animator.SetTrigger("IdleTrigger"); } break; case Enums.ManStates.Running: if (!_Animator.GetCurrentAnimatorStateInfo(0).IsName("Running")) { _Animator.SetTrigger("RunningTrigger"); } break; case Enums.ManStates.Waiting: if (!_Animator.GetCurrentAnimatorStateInfo(0).IsName("Idle")) { _Animator.SetTrigger("IdleTrigger"); } break; } }
private IEnumerator WaitForSeconds(float seconds) { _State = Enums.ManStates.Waiting; SetAnimation(_State); yield return(new WaitForSeconds(seconds)); _State = Enums.ManStates.None; // Will trigger next action }
private void RotateToOrientation() { transform.rotation = Quaternion.Slerp(transform.rotation, _TargetRot, 0.10f); if (Mathf.Abs(transform.rotation.eulerAngles.y - _TargetRot.eulerAngles.y) < 1.0f) { transform.rotation = _TargetRot; _State = Enums.ManStates.None; // Will trigger next action } }
private void FaceTowardsPlayer() { Quaternion TargetRotation = Quaternion.Euler(0, 180, 0); transform.rotation = Quaternion.Slerp(transform.rotation, TargetRotation, 0.10f); if (Mathf.Abs(transform.rotation.eulerAngles.y - TargetRotation.eulerAngles.y) < 1.0f) { transform.rotation = TargetRotation; _State = Enums.ManStates.None; // Will trigger next action } }
private void DoMovement(float movementSpeed) { float Distance = Vector3.Distance(transform.position, _TargetPos); float Travel = movementSpeed * Time.deltaTime; if (Travel > Distance) // Target reached { transform.position = _TargetPos; _State = Enums.ManStates.None; // Will trigger next action return; } else // Regular movement { Vector3 DeltaPos = (_TargetPos - transform.position); DeltaPos.Normalize(); transform.position += (DeltaPos * Travel); FaceTowardsWaypoint(DeltaPos); } }
private void SetFaceTowardsPlayer() { _State = Enums.ManStates.RotatingToPlayer; SetAnimation(_State); }
protected void SetRotateToOrientation(Enums.ManStates state, Quaternion rotation) { _State = state; _TargetRot = rotation; //SetAnimation(_State); }
protected void SetMoveToPosition(Enums.ManStates state, Vector3 position) { _State = state; _TargetPos = position; SetAnimation(_State); }
// The working state can be of different animations, dependent on room (idle, working, ...) public void Add_WorkingAction_ToList(Enums.ManStates manState) { _ActionList.Enqueue(new ActionData(() => SetAnimation(manState))); }