Exemplo n.º 1
0
    public void Hurt()
    {
        if (canBeHurt)
        {
            #if !UNITY_EDITOR
            AndroidPlugin.StartVibrator(180);
            #endif
            carpeAnimator.SetTrigger("Hit");
            carpeAnimator.SetBool("Recovering", true);
            hurtSource.PlayOneShot(hurtSounds[Random.Range(0, hurtSounds.Length - 1)]);

            carpeManager.UpdateMultiplier(false);

            foreach (Material meeesh in carpeMats)
            {
                meeesh.DOColor(Color.white, invicibilityTime / 6).SetLoops(-1, LoopType.Yoyo);
            }

            carpeState        = CarpeState.hurt;
            canBeHurt         = false;
            invincibilityLeft = invicibilityTime;
            body.velocity     = Vector3.zero;
            aieParticles.Play(true);
        }
    }
Exemplo n.º 2
0
    public void Jump()
    {
        if (canJump)
        {
            jumpParticles.Play(true);
            whooshSource.PlayOneShot(whooshSounds[Random.Range(0, whooshSounds.Length - 1)]);
            RaycastHit hit;

            if (Physics.Raycast(new Vector3(transform.position.x, 0, transform.position.z), transform.TransformDirection(Vector3.forward), out hit, 20f))
            {
                Debug.DrawLine(new Vector3(transform.position.x, 0, transform.position.z), transform.TransformDirection(Vector3.forward) * 150, Color.red, 5f);
                if (hit.collider.GetComponent <Obstacles>() != null && hit.distance < styleDetectionDistance)
                {
                    carpeManager.ObstaclePassed(hit.collider.GetComponent <Obstacles>().ObstacleValue);
                    carpeManager.IncreaseScore(Mathf.Clamp(Mathf.FloorToInt(1 / hit.distance), 0, 40));
                }
            }

            carpeAnimator.SetBool("Start", true);

            carpeState = CarpeState.startJump;
            canJump    = false;

#if !UNITY_EDITOR
            AndroidPlugin.StartVibrator(40);
#endif
        }

        //else if (carpeState == CarpeState.endJump || carpeState == CarpeState.startJump)
        //{
        //    RaycastHit hit;

        //    if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity))
        //    {
        //        if (hit.distance < styleDetectionDistance)
        //            carpeManager.UpdateMultiplier(true);
        //    }

        //    carpeState = CarpeState.stomp;
        //}
    }
Exemplo n.º 3
0
    void FixedUpdate()
    {
        var xChange = transform.position.x - posDelta;

        if (xChange != 0 && !slideSource.isPlaying && Mathf.Abs(xChange) > .01f)
        {
            slideSource.PlayOneShot(slideSounds[Random.Range(0, slideSounds.Length - 1)]);
        }

        else if (xChange == 0 && slideSource.isPlaying)
        {
            slideSource.Stop();
        }

        if (FastApproximately(transform.position.y, 0))
        {
            carpeTrail.enabled = true;
        }

        else
        {
            carpeTrail.enabled = false;
        }

        switch (carpeState)
        {
        case CarpeState.floating:
        {
            if (!canJump)
            {
                canJump = true;
            }
            transform.localPosition = Vector3.LerpUnclamped(transform.localPosition, new Vector3(transform.localPosition.x, 0, 0), recoverySpeed);
        }
        break;



        case CarpeState.startJump:
        {
            transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(transform.localPosition.x, jumpHeight, transform.localPosition.z), jumpSpeed);
            if (FastApproximately(transform.localPosition.y, jumpHeight))
            {
                carpeState = CarpeState.endJump;
                ploufParticles.Play(true);
                carpeAnimator.SetBool("Start", false);
            }
        }
        break;

        case CarpeState.endJump:
        {
            transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(transform.localPosition.x, 0, transform.localPosition.z), fallSpeed);
            if (FastApproximatelyPrecise(transform.localPosition.y, 0))
            {
                canJump    = true;
                carpeState = CarpeState.floating;
            }
        }
        break;

        case CarpeState.stomp:
        {
            transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(transform.localPosition.x, 0, transform.localPosition.z), stompSpeed);
            if (FastApproximately(transform.localPosition.y, 0))
            {
                carpeState = CarpeState.floating;
            }
        }
        break;

        case CarpeState.hurt:
        {
            transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(transform.localPosition.x, 0, hurtPos.z), hurtSpeed);
            if (FastApproximatelyPrecise(transform.localPosition.z, -hurtForce))
            {
                carpeState = CarpeState.recovering;
            }
        }
        break;

        case CarpeState.recovering:
        {
            if (!canJump)
            {
                canJump = true;
            }
            transform.localPosition = Vector3.Lerp(transform.localPosition, new Vector3(transform.localPosition.x, 0, 0), recoverySpeed);
            if (FastApproximatelyPrecise(transform.localPosition.z, 0))
            {
                carpeAnimator.SetBool("Recovering", false);
                carpeState = CarpeState.floating;
            }
        }
        break;
        }

        posDelta = transform.position.x;

        if (invincibilityLeft > 0)
        {
            invincibilityLeft -= Time.deltaTime;
        }

        else if (invincibilityLeft <= 0 && !canBeHurt)
        {
            int i = 0;
            canBeHurt = true;
            foreach (Material meeesh in carpeMats)
            {
                meeesh.DOKill();
                meeesh.DOColor(carpeColors[i], .1f);
                carpeAnimator.SetBool("Recovering", false);
                i++;
            }
        }

        if (body.velocity != Vector3.zero)
        {
            body.velocity = Vector3.zero;
        }
    }