Esempio n. 1
0
 public void NotifyPlayerAttackedPart(Moveable part)
 {
     if (part == brain)
     {
         cameraManager.AddScreenShake(0.3f);
         audioManager.PlayClip(audioManager.hurtClip);
         brainScript.NotifyHurt();
         hitsLeft--;
         if (hitsLeft <= 0)
         {
             cameraManager.AddScreenShake(0.8f);
             pp.SendPulse(brain.GetComponent <Collider2D>().bounds.center, 200f);
             Vector3 brainToPlayer = player.position - brain.transform.position;
             player.GetComponent <CharController>().ForceJump(brainToPlayer.normalized);
             currentLevel++;
             if (currentLevel < levels.childCount)
             {
                 StartLevel(currentLevel);
             }
             else
             {
                 ActivateEndState();
             }
         }
     }
 }
Esempio n. 2
0
    public void Attack()
    {
        bool attacked = false;

        foreach (ProjectileWeapon weapon in weapons)
        {
            attacked |= weapon.Attack();
        }
        if (attacked)
        {
            cameraManager.AddScreenShake(0.2f);
        }
    }
Esempio n. 3
0
    private void SwitchToState(State state)
    {
        State lastState = this.state;

        this.state = state;

        stateStartTime = Time.timeSinceLevelLoad;

        if (state == State.WaitingToStart)
        {
            atTarget = true;
            levelManager.NotifyPartAtTarget(this);
        }

        // For actions where both hands would play
        if (config.part == MoveConfig.Part.LeftHand)
        {
            if (state == State.PatrolStart)
            {
                audioManager.PlayClip(audioManager.handPatrolShake);
            }
            else if (state == State.PatrolMoveTo)
            {
                audioManager.PlayClip(audioManager.handPatrolMove);
            }
            else if (state == State.PatrolWaitEnd)
            {
                audioManager.PlayClip(audioManager.handPatrolArrive);
                cameraManager.AddScreenShake(0.3f);
            }
        }

        if (state == State.PlayerMoveTo)
        {
            // Figure out direction using collider positions
            startPointPlayerTo = col.bounds.center;
            Vector3 startToNext   = config.GetTarget(targetIndex) + Vector2.up * col.bounds.extents.y - startPointPlayerTo;
            Vector3 startToPlayer = player.GetComponent <Collider2D>().bounds.center - (Vector3)startPointPlayerTo;
            playerToDir = Vector3.Cross(startToNext, startToPlayer).z > 0 ? 1 : -1;
            // For actual movement, we need to use transform positions
            startPointPlayerTo = transform.position;

            audioManager.PlayClip(audioManager.handPatrolMove);
        }
        else if (state == State.PlayerWait && lastState == State.PlayerMoveTo)
        {
            cameraManager.AddScreenShake(0.3f);
        }

        if (state == State.MoveToInitialTarget && config.part == MoveConfig.Part.Brain)
        {
            audioManager.PlayClip(audioManager.headMove);
        }


        if (config.part == MoveConfig.Part.Brain)
        {
            Debug.Log("Brain Switching to state " + state);
            if (state == State.WaitingForNextConfig)
            {
                heartParticles.Play();
            }
            else
            {
                heartParticles.Stop();
            }
        }
    }