[英]Player Jumping Height is not consistent - Unity
我正在开发2D平台游戏,例如,我意识到玩家的跳跃功能并非每次都起作用。 如果玩家在移动/跑步时跳跃,或者玩家跳跃而没有移动,则跳跃高度是不同的。
我有2个独立的函数Move()和Jump(),Move()使用transform.Translate来使播放器移动,而Jump()使用elasticBody.AddForce()来使播放器跳转。 我已经尝试过将播放器的Move()函数更改为使用刚性主体来使播放器移动,而不是使用transform.Translate()。 而且它没有用。
我也尝试过使用transform.Translate来使玩家跳跃,这解决了不一致的跳跃高度问题,但是玩家只是向上移动而不是跳跃
这是我的代码结构的表示,而不是实际的代码,因为实际的代码就像600行
public class Player
{
float JumpSpeed;
bool isGrounded;
void Update()
{
if (Input.GetKey(KeyCode.A))
Move(Directions.Left);
if (Input.GetKey(KeyCode.D))
Move(Directions.Right);
if (Input.GetKeyDown(KeyCode.Space))
Jump(JumpSpeed);
}
public void Move(Directions dir)
{
Vector2 speed;
//figure out speed and etc...
//makes the player move in the right direction and speed
transform.Translate(speed * Time.deltaTime);
}
public void Jump(float speed)
{
if(isGrounded)
rigidBody.AddForce(new Vector2(0, speed * Time.deltaTime), ForceMode2D.Impulse);
}
}
不确定这是否是您要解决的问题,但是使用平移来移动播放器, 然后加力跳转并不是真正解决问题的最佳方法。
我会考虑将刚体的速度部分用于跳跃和运动。 这将防止翻译对象可能引起的任何怪异现象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.