// Start is called before the first frame update
 void Awake()
 {
     mGameObject = gameObject;
     originalPos = transform.position;
     rg          = GetComponent <Rigidbody2D>();
     aimingLine  = Instantiate(aimingLinePrefab, transform).GetComponent <AimingLine>();
 }
예제 #2
0
 // Use this for initialization
 void Start()
 {
     cannonCollider = this.GetComponent <CircleCollider2D>();
     aimingLine     = GetComponent <AimingLine>();
     inputManager   = GameObject.Find("Director").GetComponent <UnifiedInput>();
 }
예제 #3
0
    private void HandleStateTransitionSideEffect(GuardState oldState, GuardState newState)
    {
        switch (oldState)
        {
        case GuardState.FarReady:
            aimingLine.Stop();
            break;

        case GuardState.FarShoot:
            laser.Stop();
            laser = null;
            break;

        case GuardState.Hit:
            attackEnabled = true;
            break;
        }

        switch (newState)
        {
        case GuardState.Turning:
            HeadingRight = !HeadingRight;
            velocity.x   = 0f;
            break;

        case GuardState.FarReady:
            stateEndTime = Time.time + FarReadyDelay;
            aimingLine   = Instantiate(AimingLinePrefab, transform);
            break;

        case GuardState.NearReady:
            if (oldState == GuardState.FarReady)
            {
                stateEndTime = Mathf.Min(stateEndTime, Time.time + NearReadyDelay);
            }
            else
            {
                stateEndTime = Time.time + NearReadyDelay;
            }
            break;

        case GuardState.FarShoot:
            stateEndTime = Time.time + FarShootDelay;
            laser        = Instantiate(LaserPrefab, transform);
            SoundEffectManager.Instance.Play(FarShootSound);
            break;

        case GuardState.NearShoot:
            stateEndTime = Time.time + NearShootDelay;
            for (int i = 0; i < NearShootParticles; i++)
            {
                Instantiate(ParticlePrefab, transform);
            }
            SoundEffectManager.Instance.Play(NearShootSound);
            break;

        case GuardState.BackJumping:
            BackJump();
            break;

        case GuardState.Hit:
            stateEndTime  = Time.time + HitDelay;
            attackEnabled = false;
            break;

        case GuardState.Dead:
            attackEnabled = false;
            break;
        }
    }