Пример #1
0
    // Update is called once per frame
    void Update()
    {
        Vector3 targetPos = Vector3.zero;

        if (joystick)
        {
            JoystickMode();
        }
        else
        {
            targetPos = MouseMode();
        }

        if (isFacingRight > 0)
        {
            weapon.transform.parent.rotation = Quaternion.FromToRotation(Vector3.right, targetDir.normalized);
        }
        else
        {
            weapon.transform.parent.localRotation = Quaternion.FromToRotation(targetDir, Vector3.left);
        }

        Vector2 bulletPos = weapon.transform.Find("bulletSpawn").position;

        if (joystick)
        {
            Debug.DrawLine(bulletPos, bulletPos + targetDir.normalized * 100, Color.red);
        }

        //点击鼠标左键开火
        if (Input.GetButtonDown(fire1))
        {
            if (!joystick)
            {
                targetDir = (Vector2)targetPos - bulletPos;
                if (Vector3.Magnitude(targetPos - transform.position) > 10.5f)
                {
                    weapon.Fire(targetDir);
                }
            }
            else
            {
                weapon.Fire(targetDir);
            }
        }

        //点击鼠标右键投掷炸弹
        //按住蓄力
        if (Input.GetButton(fire2))
        {
            throwBomb.Charge();
        }
        //松开释放
        if (Input.GetButtonUp(fire2))
        {
            throwBomb.Throw(targetDir);
        }

        //射线检测是否碰到地面,若是则可以跳跃
        isGrounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));
        if (Input.GetButtonDown(jump) && isGrounded)
        {
            anim.SetTrigger("Jump");
            rb.AddForce(new Vector2(0, jumpForce));
            isjumping = true;
        }
        //跳跃蓄力
        if (isjumping)
        {
            rb.AddForce(new Vector2(0, jumpForce));
            jumpTimer += Time.deltaTime;
            if (jumpTimer > 0.15f)
            {
                isjumping = false;
            }
        }
        if (Input.GetButtonUp(jump))
        {
            isjumping = false;
            jumpTimer = 0;
        }

        //引爆定时炸弹
        if (Input.GetButtonUp(detonate))
        {
            if (detonateFunc != null)
            {
                detonateFunc();
            }
        }

        //和控制台交互
        if (Input.GetButtonUp(interact))
        {
            Console.Instance.ConsoleInteract();
        }
    }