Esempio n. 1
0
    void Update()
    {
        var modpos = transform.position;

        modpos.y += JumpDistance / 2;
        RaycastHit hit;

        if (!isInvulnerable && Physics.Raycast(modpos, Vector3.down, out hit, JumpDistance, Lethal))
        {
            _gameManager.Lose();
            return;
        }

        if (Time.time - invulnerabilityStart >= invulnerabilityTime && isInvulnerable)
        {
            isInvulnerable = false;
        }


        if (Input.GetKeyDown(KeyCode.Space) && Physics.Raycast(modpos, Vector3.down, JumpDistance))
        {
            Vector3 dir = new Vector3(currentDir.x, currentDir.y, 0);
            m_rigidbody.AddForce((Vector3.up * jumpForce) + (dir * inJumpSpeed), ForceMode.Impulse);
            isJumping       = true;
            additionalForce = additionalJumpForce;
            soundsManager.PlayJump();
        }
        if (Input.GetKey(KeyCode.Space) && isJumping)
        {
            m_rigidbody.AddForce(Vector3.up * additionalForce, ForceMode.Impulse);
            if (additionalForce >= decreasingJumpParameter)
            {
                additionalForce -= decreasingJumpParameter;
            }
        }
        if (Input.GetKeyUp(KeyCode.Space))
        {
            additionalForce = additionalJumpForce;
            isJumping       = false;
        }
        if (Input.GetKey(KeyCode.LeftArrow) && !CheckCollisionByRaycasting(Vector3.left))
        {
            mesh.transform.eulerAngles = new Vector3(-90.0f, 0.0f, 0.0f);
            currentDir = Vector2.left;
        }
        else if (Input.GetKey(KeyCode.RightArrow) && !CheckCollisionByRaycasting(Vector3.right))
        {
            mesh.transform.eulerAngles = new Vector3(-90.0f, 0.0f, 180.0f);
            currentDir = Vector2.right;
        }
        else
        {
            currentDir = Vector2.zero;
        }
    }