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上使用您的逻辑,而不是更新。也许会有帮助。