Esempio n. 1
0
 void Start()
 {
     healthBar.value = startingHealth;
     state           = MainCharacterGameState.NormalState;
     currentHealth   = startingHealth;
     rightArm        = transform.Find("polySurface4");
     controller      = GameObject.FindObjectOfType <FirstPersonController>();
 }
Esempio n. 2
0
    // Update is called once per frame
    void Update()
    {
        healthBar.value = currentHealth;


        isAttack = false;
        rightarmCollider.enabled = false;
        leftarmCollider.enabled  = false;
        //if (!soapPicked)
        //{
        //    if (Input.GetMouseButtonDown(0))
        //    {
        //        Debug.Log("left clicked");
        //        isAttack = true;
        //        armCollider.enabled = true;
        //    }

        //}


        ////Debug.Log(isAttack);

        //if(soapPicked && Input.GetMouseButtonDown(1))
        //{
        //    Debug.Log("throw soap");

        //    pickUp.transform.parent = null;
        //    soapRg.isKinematic = false;
        //    soapRg.velocity = Camera.main.transform.forward * 5f;

        //    soapPicked = false;
        //}

        if (damaged)
        {
            damageImage.color = flashColor;
        }
        else
        {
            damageImage.color = Color.Lerp(damageImage.color, Color.clear, flashSpeed * Time.deltaTime);
        }

        damaged = false;

        if (state != lastState)
        {
            Debug.Log("MainCharacterGameState : " + state);
            lastState = state;
        }


        switch (state)
        {
//////////////////////////////////////////////////////////
        case MainCharacterGameState.NormalState:
            if (currentHealth <= 0f && !isDead)
            {
                isDead = true;
                state  = MainCharacterGameState.GameOver;
            }
            else
            {
                if (!soapPicked)
                {
                    if (Input.GetMouseButtonDown(0) && Time.time >= attackStart + coolDown)
                    {
                        GameManager.audioPlay.PlayRandomSound(aus, punchMissClips);

                        //Debug.Log("Left clicked");
                        //Debug.Log(Time.time);
                        attackStart = Time.time;
                        isAttack    = true;

                        if (Random.Range(0f, 1f) >= 0.5f)
                        {
                            rightarmCollider.enabled = true;
                            rightHandAnime.SetTrigger("handPunch");
                        }
                        else
                        {
                            leftarmCollider.enabled = true;
                            leftHandAnime.SetTrigger("handPunch");
                        }
                    }
                }
                if (soapPicked)
                {
                    state = MainCharacterGameState.PickedSoap;
                }

                if (caughtByDude)
                {
                    state = MainCharacterGameState.CaughtByDude;
                }
            }

            break;

//////////////////////////////////////////////////////////////
        case MainCharacterGameState.PickedSoap:

            if (currentHealth <= 0f && !isDead)
            {
                isDead = true;
                state  = MainCharacterGameState.GameOver;
            }
            else
            {
                if (soapPicked)
                {
                    if (Input.GetMouseButtonDown(0))
                    {
                        pickUp.transform.parent = null;
                        soapRg             = pickUp.GetComponent <Rigidbody>();
                        soapRg.isKinematic = false;
                        soapRg.useGravity  = true;
                        soapRg.velocity    = Camera.main.transform.forward * 5f;
                        soapPicked         = false;
                    }
                }
                if (!soapPicked)
                {
                    state = MainCharacterGameState.NormalState;
                }

                if (caughtByDude)
                {
                    state = MainCharacterGameState.CaughtByDude;
                }
            }
            break;

//////////////////////////////////////////////////////////////////
        case MainCharacterGameState.CaughtByDude:

            currentHealth -= Time.deltaTime * caughtDmg;

            healthBar.value = currentHealth;

            if (currentHealth <= 0 && !isDead)
            {
                isDead = true;
                state  = MainCharacterGameState.GameOver;
            }
            else
            {
                if (!escapeDude)
                {
                    controller.m_WalkSpeed = 1.0f;

                    if (soapPicked && Input.GetMouseButtonDown(0))
                    {
                        pickUp.transform.parent = null;
                        soapRg             = pickUp.GetComponent <Rigidbody>();
                        soapRg.isKinematic = false;
                        soapRg.useGravity  = true;
                        soapRg.velocity    = Camera.main.transform.forward * 5f;
                        soapPicked         = false;
                    }

                    if (!soapPicked && Input.GetMouseButtonDown(0) && Time.time >= attackStart + coolDown)
                    {
                        if (Input.GetMouseButtonDown(0) && Time.time >= attackStart + coolDown)
                        {
                            Debug.Log("Left clicked");
                            //Debug.Log(Time.time);
                            attackStart = Time.time;
                            isAttack    = true;

                            if (Random.Range(0f, 1f) >= 0.5f)
                            {
                                rightarmCollider.enabled = true;
                                rightHandAnime.SetTrigger("handPunch");
                            }
                            else
                            {
                                leftarmCollider.enabled = true;
                                leftHandAnime.SetTrigger("handPunch");
                            }
                        }
                    }
                }

                if (escapeDude)
                {
                    caughtByDude = false;
                    if (soapPicked)
                    {
                        state = MainCharacterGameState.PickedSoap;
                        controller.m_WalkSpeed = 5f;
                        escapeDude             = false;
                    }

                    if (!soapPicked)
                    {
                        state = MainCharacterGameState.NormalState;
                        controller.m_WalkSpeed = 5f;
                        escapeDude             = false;
                    }
                }
            }
            break;

        case MainCharacterGameState.GameOver:

            Death();
            break;
        }
    }
Esempio n. 3
0
 public void enterGameOver()
 {
     state = MainCharacterGameState.GameOver;
 }
Esempio n. 4
0
 public void enterCaughByDude()
 {
     state = MainCharacterGameState.CaughtByDude;
 }
Esempio n. 5
0
 public void enterPickedSoap()
 {
     state = MainCharacterGameState.PickedSoap;
 }
Esempio n. 6
0
 public void enterNormalState()
 {
     state = MainCharacterGameState.NormalState;
 }