Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 游戏中的跳跃虫子_C#_Unity3d - Fatal编程技术网

C# 游戏中的跳跃虫子

C# 游戏中的跳跃虫子,c#,unity3d,C#,Unity3d,我目前在跳跃方面遇到了问题,当我的游戏窗口很小时,一切都很好,但是当把我的游戏窗口最大化显示并构建它时,我的跳跃机制遇到了问题,它没有跳到我告诉它的正确数量,而是跳了一点点,然后又被拉了回来。目前,我正在使用更新方法,代码如下: void CalculateMovement() { horizontalInput = Input.GetAxis("Horizontal"); _playerAnim.SetFloat("s

我目前在跳跃方面遇到了问题,当我的游戏窗口很小时,一切都很好,但是当把我的游戏窗口最大化显示并构建它时,我的跳跃机制遇到了问题,它没有跳到我告诉它的正确数量,而是跳了一点点,然后又被拉了回来。目前,我正在使用更新方法,代码如下:

   void CalculateMovement()
    {
        horizontalInput = Input.GetAxis("Horizontal");
        _playerAnim.SetFloat("speed", Mathf.Abs(horizontalInput));

        if (_controller.isGrounded == true)
        {
           
           
            _playerAnim.SetBool("isJumping", false);
            _canDoubleJump = false;
            _canWallJump = false;
            _direction = new Vector3(horizontalInput, 0, 0);
            _velocity = _direction * _speed;
            if (Input.GetKeyDown(KeyCode.Space) && _canWallJump == false && _canDoubleJump == false)
            {
                _playerAudio.clip = _playerSoundsClip[5];
                _playerAudio.Play();
                _playerAnim.SetBool("isJumping", true);
                Instantiate(_dustSmoke, new Vector3(transform.position.x, transform.position.y - 0.5f, transform.position.z),Quaternion.identity);
                _canDoubleJump = true;
                _yVelocity = _jumpHeight;
               
            }
        }
        else
        {
            
            if (_canWallJump == false && Input.GetKeyDown(KeyCode.Space)  && _canDoubleJump == true)
            {
                _yVelocity = 0;
                _playerAudio.clip = _playerSoundsClip[5];
                _playerAudio.Play();
                _playerAnim.SetBool("isJumping", true);
                Instantiate(_dustSmoke, new Vector3(transform.position.x, transform.position.y - 0.5f, transform.position.z), Quaternion.identity);
                 _yVelocity = _jumpHeight * _bonusJumpMultiplier;
                 _canDoubleJump = false;
                


            }
            else if (_canWallJump == true && Input.GetKeyDown(KeyCode.Space) )
            {
                _yVelocity = 0;
                _yVelocity = _jumpHeight;
                _velocity = _wallSurfaceNormal * _speed  * pushPower;
                _playerAudio.clip = _playerSoundsClip[7];
                _playerAudio.Play();
               
                Instantiate(_dustSmoke, new Vector3(transform.position.x, transform.position.y - 0.5f, transform.position.z), Quaternion.identity);
                _canWallJump = false;

                SwitchRotation();




            }


            _yVelocity -= _gravity;
        }

        _velocity.y = _yVelocity;

        _controller.Move(_velocity*Time.deltaTime );
    }
我试着使用Debug.log(_yVelocity.ToString()),但是这个数字似乎很正常,我也试着将数字硬编码到我的移动方法中,但它仍然有相同的错误,所以任何人都知道如何修复它


编辑:在搞乱了这个问题之后,我发现这个问题可能与我的
\u yVelocity=\u gravity
有关,因为当更改它时,我的角色在小屏幕上跳得超高,但在“最大化显示”上跳得正常。

我找到了发生这种情况的原因,原来一切都是因为帧速率,所以我可以通过接收来自void Update()的输入并将其应用于void FixedUpdate来解决这个问题

您是否与UI元素、窗口大小有任何关系?是
\u gravity
还是
\u jumpHeight
浮动变量,您是通过代码设置的吗?不,一点也不,它们与UI元素没有任何关系,对于_gravity和_jumpHeight,我将它们作为私有和[Serialize]放在检查器中修改它们,并且不再修改它们。您是否有使用
\if UNITY\u editor
的编辑器代码?顺便说一下,如果您使用的是字符控制器,您可能应该在FixedUpdate上使用您的逻辑,而不是更新。也许会有帮助。