Advertisement
Guest User

Rotate Cruiser to left or right side

a guest
Jul 29th, 2020
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.58 KB | None | 0 0
  1.     public class NetRotateSide : StateMachineBehaviour
  2.     {
  3.         [Header("State settings")]
  4.         public string onExitDeactivate = "isHolding";
  5.  
  6.         private Quaternion qDir;
  7.         private Transform transform = null;
  8.         private SpaceShip ship = null;
  9.  
  10.         public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
  11.         {
  12.             //кешируем классы
  13.             if (transform == null)
  14.             {
  15.                 transform = animator.transform;
  16.                 ship = animator.GetComponent<SpaceShip>();
  17.             }
  18.  
  19.             //выбираем случайно левую или правую сторону корабля
  20.             qDir = Quaternion.LookRotation(ship.target.position - transform.position);
  21.             if (Random.value < 0.5f)
  22.                 qDir *= Quaternion.Euler(0f, 90f, 0f);
  23.             else
  24.                 qDir *= Quaternion.Euler(0f, -90f, 0f);
  25.  
  26.             ship.IsShooting = true;
  27.         }
  28.  
  29.         public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
  30.         {  
  31.             ship.RotateToDirection(qDir);
  32.  
  33.             //перезаряжаемся и атакуем
  34.             ship.ReloadAndShoot();
  35.             //это конечное состояние, поэтому переходов дальше нет
  36.         }
  37.  
  38.         override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
  39.         {
  40.             animator.SetBool(onExitDeactivate, false);
  41.         }
  42.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement