/************************************************************************************************************************/ // Called by a UI Button. public void PlayAnimatorController() { // Play the Animator Controller on the HybridAnimancerComponent: if (_Animancer is HybridAnimancerComponent hybrid) { hybrid.Play(hybrid.Controller, 0); } else// Or Stop the AnimancerComponent to let the native Animator Controller resume control: { _Animancer.Stop(); } }
public override void OnPostPerform(bool _successed) { navMeshAgent.isStopped = true; if (_successed) { onSuccess?.Invoke(); } else { onFailed?.Invoke(); Agent.Memory.SetData <GameObject>(targetMemoryKey, null); Agent.SetState("HasTarget", false); Agent.SetState("InAttackRange", false); } anim.Stop(animationClip); }
private void OnDestroy() { animancer.Stop(); }
public void HandleAnimations() { if (Networker == null) { return; } // We set these variables here so we can access them at any time in another script // It's basically caching them so things can be a bit more performant Velocity = Networker.GetVelocity(); MoveDirectionXZ = new Vector3(Velocity.x, 0, Velocity.z); MoveDirectionXZRelative = transform.InverseTransformDirection(new Vector3(Velocity.x, 0, Velocity.z)); MoveSpeed = Networker.GetMoveSpeed(); // Upperbody stuff if (Networker.b1.DrawingWeapon) { if (!Anim.IsPlaying(Weapon.DrawWeapon)) { // Set layer weight Anim.GetLayer(1).SetWeight(1); Anim.Stop(Weapon.ReloadWeapon); Anim.CrossFade(Weapon.ReloadWeapon, 0.1f, 1); } } else if (Networker.b1.Reloading) { if (!Anim.IsPlaying(Weapon.ReloadWeapon)) { // Set layer weight Anim.GetLayer(1).SetWeight(1); Anim.Stop(Weapon.ReloadWeapon); Anim.CrossFade(Weapon.ReloadWeapon, 0.2f, 1); } } else if ((Networker.b1.Attacking || Networker.b1.Aiming) && Controller.ActiveWeapon.AimToCamera) { // Set layer weight Anim.GetLayer(1).SetWeight(1); var state = (LinearMixerState)Anim.Transition(Weapon.Aiming, 1); state.Parameter = (float)Networker.nv_Pitch.Value / 100; } else if (Networker.b1.Attacking && !Controller.ActiveWeapon.AimToCamera) { foreach (AttackAnim attackAnim in Weapon.Attack.Attacking) { if (attackAnim.AttackNumber != Networker.nv_AttackNumber.Value) { continue; } if (attackAnim.UseFullbody) { break; } if (!Anim.IsPlaying(attackAnim.Animation)) { // Set layer weight Anim.GetLayer(1).SetWeight(1); Anim.Stop(attackAnim.Animation); Anim.CrossFade(attackAnim.Animation, 0.15f, 1); } break; } } else if (Networker.b1.Aiming && !Controller.ActiveWeapon.AimToCamera) { // Set layer weight Anim.GetLayer(1).SetWeight(1); var state = (LinearMixerState)Anim.Transition(Weapon.Aiming, 1); state.Parameter = 0; } else { // Set layer weight Anim.GetLayer(1).StartFade(0, 0.15f); } // Lowerbody stuff if (Networker.b1.Attacking || Networker.b1.Aiming) { if (!Controller.ActiveWeapon.AimToCamera) { if (Networker.b1.Aiming) { DoBasicMoveLocomotion(); } else { foreach (AttackAnim attackAnim in Weapon.Attack.Attacking) { if (attackAnim.AttackNumber != Networker.nv_AttackNumber.Value) { continue; } transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, 0), 18 * Time.deltaTime); if (!attackAnim.UseFullbody) { DoBasicMoveLocomotion(); break; } if (!Anim.IsPlaying(attackAnim.Animation)) { Anim.GetLayer(1).SetWeight(0); Anim.Stop(attackAnim.Animation); Anim.CrossFade(attackAnim.Animation, 0.15f); } break; } } } else if (Controller.ActiveWeapon.AimToCamera) { DoBasicMoveLocomotion(); Vector3 direction = new Vector3(Networker.nv_AimPositionX.Value / 10, Networker.nv_AimPositionY.Value / 10, Networker.nv_AimPositionZ.Value / 10) - Controller.transform.position; Quaternion lookRotation = Quaternion.LookRotation(direction); lookRotation.x = 0; lookRotation.z = 0; transform.rotation = Quaternion.Lerp(transform.rotation, lookRotation, 18 * Time.deltaTime); } } else if (Networker.b2.IsWallJumpFrozen) { transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, 0), 18 * Time.deltaTime); Anim.CrossFade(Base.WallJumpFrozen, 0.15f); } else if (Networker.b2.IsWallJumping && Velocity.y >= -4) { var state = (LinearMixerState)Anim.Transition(Base.WallJumping); if (wallJumpX > 6) { Base.WallJumping.State.Parameter = 1; } else if (wallJumpX < -6) { Base.WallJumping.State.Parameter = -1; } else { Base.WallJumping.State.Parameter = 0; } transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, 0), 15 * Time.deltaTime); } else if (Networker.b1.IsDodging) { if (Networker.b1.DodgeDirection && !Anim.IsPlaying(Base.DodgeRight)) { Anim.Stop(Base.DodgeRight); // Moving right var state = Anim.CrossFade(Base.DodgeRight, 0.2f); state.Speed = 1.4f; } if (!Networker.b1.DodgeDirection && !Anim.IsPlaying(Base.DodgeLeft)) { Anim.Stop(Base.DodgeLeft); // Moving left var state = Anim.CrossFade(Base.DodgeLeft, 0.2f); state.Speed = 1.4f; } transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, 0), 15 * Time.deltaTime); } else if (Networker.b2.IsWallSlammed) { if (!Anim.IsPlaying(Base.WallSlammed)) { Anim.CrossFade(Base.WallSlammed, 0.1f); } Quaternion to = Quaternion.LookRotation(MoveDirectionXZ); transform.rotation = Quaternion.Lerp(transform.rotation, to, 20 * Time.deltaTime); } else if (Networker.b2.IsKnockingBack) { Anim.CrossFade(Base.KnockingBack, 0.25f); // Rotate Quaternion to = Quaternion.LookRotation(-MoveDirectionXZ); transform.rotation = Quaternion.Lerp(transform.rotation, to, 15 * Time.deltaTime); } else if (Networker.b2.IsFlinching) { } else if (Networker.b2.IsStunned) { } else { if (!Networker.b1.IsSprinting) { DoBasicMoveLocomotion(); } else { transform.localRotation = Quaternion.Lerp(transform.localRotation, Quaternion.Euler(0, 0, 0), 20 * Time.deltaTime); Anim.CrossFade(Weapon.Sprint, 0.2f); } } // Update weapon holster/attack/rest if (Networker.b1.IsSprinting || Networker.b1.IsDodging || Networker.b2.IsWallJumpFrozen || Networker.b2.IsWallJumping || Networker.b2.IsStunned || Networker.b2.IsKnockingBack || Networker.b2.IsWallSlammed) { Controller.ActiveWeapon.ActiveSkin.Holster(); } else if (Networker.b1.Attacking || Networker.b1.Reloading) { Controller.ActiveWeapon.ActiveSkin.Hold(); } else { Controller.ActiveWeapon.ActiveSkin.Hold(); } // Update Final IK ModelRefrences.Tilt.weight = Networker.b1.IsSprinting ? 1 : 0; // Animation effects CheckDodge(); //CheckWallJump(); CheckJump(); CheckLand(); CheckSprint(); if (Networker.b1.IsGrounded && !Networker.b1.IsDodging && !Networker.b2.IsKnockingBack && !Networker.b2.IsStunned && !Networker.b2.IsFlinching && MoveDirectionXZ.magnitude != 0.0f && !Networker.nv_Dead.Value && !(Networker.b1.Attacking && !Controller.ActiveWeapon.AimToCamera)) { DoFootstep(); } }